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)
注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。