Numpy数组转换为OpenCV3图像
admin 于 2018年04月08日 发表在 计算机视觉

OpenCV中每张图像可以看成是 .array类型的二维或三维数组。8位的灰度图像是一个包含字节值的二维数组;8位的BGR图像是一个三维数组。

例如:

image[0,0] 或 image[0,0,0]

第一个值代表像素的y坐标或行,0表示顶部;

第二个值是像素的x坐标或列,0表示最左边;

第三个值(如果可用)表示颜色的通道。

1. 图像数组化

若一幅图的每个通道为8位,则可显式转换为标准的一维Python bytearray格式:

byteArray = bytearray(image)

反之,bytearray含恰当顺序的字节,可以通过显式转换和重构,得到numpy.array形式图像:

grayImage = np.array(grayByteArray).reshape(height,width)
bgrImage = np.array(bgrByteArray).reshape(height,width,3)

2. 随机数组转为图像 

2.1 生成随机数组

randomByteArray = bytearray(os.urandom(120000))
flatNumpyArray = np.array(randomByteArray)

2.2 转换为灰度图像

将随机数组转换为400*300灰色图像,保证元素个数相同

grayImage = flatNumpyArray.reshape(300,400)
cv2.imwrite('RandomGray.png',grayImage)

2.3 转换为彩色图像

将随机数组转换为400*100的彩色图像(注:彩色图像为3通道

bgrImage = flatNumpyArray.reshape(100,400,3)
cv2.imwrite('RandomColor.png',bgrImage)

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:opencv3,python,图像处理