python中numpy数据创建OpenCV图像数据
发布日期: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)

运行上述代码会出现一下情况:

从上图中可知,图像中有一些原图的痕迹的,但是很少。这是因为python中读取的OpenCV的imread函数默认读取的是8位的unsigned int类型,因此在用numpy创建时,应该将类型设置为np.uint8:

#上述代码中的: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并打开,发现该图片是正常的。

上一篇:C++中的引用‘&‘和指针的区别,以及指针使用的注意事项
下一篇:C++ string常用成员函数总结

发表评论

最新留言

不错!
[***.144.177.141]2025年04月16日 18时09分23秒