简介:
OpenCV图像是numpy.array类型的二维或者三维数组。8位灰度图
像是包含字节值的一个二维数组。24位的BGR图像是一个三维数组,也包含字节值。我们可以通过使用类似于image[0,0]或者image[0,0,0] 的表达式来访问这些值。第一个索引是像素的y坐标或者行,0表示顶部。第二个索引是像素的x坐标或者列,0表示最左边。第三个索引(如果有的话)表示一个颜色通道。
数组对应具体像素说明
在左上角为白色像素的8位灰度图像中,image[0,0]是255。
在左上角为白色像素的24位(每个通道8位)BGR图像中,image[0,0]是[255,255,255]。
img = np.zeros((10, 10), dtype="uint8")
img[:,:]=255
cv2.imshow("Original", img)
打印数组可以看到img[0,0]位置是255
因为本次生成的图片是纯白色的图片,所以其他数组也是255.
[[255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255]]
生成随机图片
img=np.random.randint(0,256,120000, dtype=np.uint8).reshape(300,400)
img=cv2.imwrite("img.png",img)
NumPy 的
random.randint
函数生成一个随机整数数组,并通过reshape
函数将其重新调整为特定的形状。具体解释如下:
numpy.random.randint(0, 256, 120000)
:这部分代码使用random.randint
函数生成一个长度为 120000 的随机整数数组。范围是 0 到 256(包括 0 和 256)。.reshape(300, 400)
:这部分代码将生成的随机整数数组通过reshape
函数重新调整为 300 行 400 列的二维形状。
图片转换字节数组
img = cv2.imread('img.png')
byteArrays = bytearray(img)
字节数组转换图片
由于生成随机图片的形状为(300,400,3),转换时也要相同。
img = cv2.imread('img.png')
byteArrays = bytearray(img)
bgra=numpy.array(byteArrays).reshape(300,400,3)
cv2.imshow('img',bgra)