1.概念
(1).一个字节能表示0-255的整数,一个像素通常由每个通道的一个字节表示.
(2).一个OpenCV图像时.array类型的二位或者三维数组.8位的灰度图像是一个含有字节值的二维数组.一个24位的BGR图像是一个三维数组,它也包含了字节值.
2.代码 其他的信息都在注释里
import cv2 as cv
import numpy
import os
img=cv.imread('timg.jpg')
#生成一个120,000字节的随机字节
#一个像素是一个字节,8位
randomByteArray=bytearray(os.urandom(120000))
#print(randomByteArray)
#转换成numpy数组
flatNumpyArray=numpy.array(randomByteArray)
# print(flatNumpyArray)
#转换成400*300像素 数组 300行*400列 所以图片长点
img=flatNumpyArray.reshape(300,400)
print(img.shape)
#写出文件
cv.imwrite('randomGray.jpg',img)
#转换成100*400的有色图片 数组 400行*100列 3个通道 所以图片宽点
img=flatNumpyArray.reshape(400,100,3)
#写出文件
cv.imwrite('randomColor.jpg',img)
3.注意
使用以下代码能更高效的生成随机numpy数组 上文使用的os.urandom()函数有助于展示原始字节的转换
numpy.random.randint(0,256,120000).reshape(300,400)