我从OpenCV/opencv-python(numpy.array
)创建了图像,我想将它们转换为pygame.Surface
对象:
def cvImageToSurface(cv2Image):
pygameSurface = # ? create from "cvImage"
return pygameSurface
surface = cvImageToSurface(cv2Image)
字符串
有些图像有三个通道(BGR),有些图像还有一个Alpha通道(BGRA)。在cvImageToSurface
中,我需要做什么才能将其中一种格式的图像转换为pygame.Surface
对象?
1条答案
按热度按时间gorkyyrv1#
numpy.array
的shape
属性是每个维度中的元素数。第一个元素是高度,第二个元素是宽度,第三个元素是通道的数量。可以通过pygame.image.frombuffer
生成pygame.Surface
。第一个参数可以是numpy.array
,第二个参数的格式为(RGB
或RGBA
)。通过切片获取
pygame.Surface
对象的大小(width,height):字符串
根据第三个通道确定
pygame.Surface
对象的目标格式:型
由于源格式为 BGR 或 BGRA,但目标格式为 RGB 或 RGBA,因此必须交换红色和蓝色通道:
型
在灰度图像的情况下,必须使用
numpy.reshape
更改阵列的形状,并且必须使用numpy.repeat
将灰色通道扩展为红绿蓝颜色通道:型
利用他的数据,
pygame.Surface
对象可以由pygame.image.frombuffer
生成:型
为确保图像具有与显示器 Surface 相同的像素格式并获得最佳性能,Surface 应转换为
convert
或convert_alpha
:型
完整功能
cvImageToSurface
:型
最小示例:
的数据
型