
python中numpy数据创建OpenCV图像数据
从上图中可知,图像中有一些原图的痕迹的,但是很少。这是因为python中读取的OpenCV的imread函数默认读取的是8位的unsigned int类型,因此在用numpy创建时,应该将类型设置为np.uint8:
发布日期:2021-05-07 22:09:32
浏览次数:26
分类:精选文章
本文共 801 字,大约阅读时间需要 2 分钟。
目的
在用python的numpy的array创建OpenCV图像数据类型时,如果不注意array的类型,最后显示的图像,会出现问题,但是将其保存为图像文件(.jpg或者.png等)时,又是正常的。
import numpy as npimport cv2w = 800h = 600img = cv2.imread("./images/image82.jpg")blank = np.zeros((800,600,3))blank[0] = img[0]blank[1] = img[1]blank[2] = img[2]cv2.imshow("window",blank)cv2.waitKey(0)
运行上述代码会出现一下情况:

#上述代码中的:blank = np.zeros((800,600,3)),改为blank = np.zeros((800,600,3), dtype=np.uint8)
这样显示就正常了。
但是如果不用用imshow()显示,直接用imwrite() 保存就是正常的图像:import numpy as npimport cv2w = 800h = 600img = cv2.imread("./images/image82.jpg")blank = np.zeros((800,600,3))blank[0] = img[0]blank[1] = img[1]blank[2] = img[2]cv2.imwrite("./images/result.jpg",blank)
然后在文件夹中找到result.jpg并打开,发现该图片是正常的。