如何将 cv2 / Pillow-modified 图像写入磁盘?
Posted
技术标签:
【中文标题】如何将 cv2 / Pillow-modified 图像写入磁盘?【英文标题】:How can I write a cv2 / Pillow-modified image out to disk? 【发布时间】:2020-03-31 17:45:26 【问题描述】:我有一个用 Image.open() 打开的图像。我做了一些更改,重新分配像素 RGV 值,并尝试保存。
当我尝试保存时,我得到:
Trace back (most recent call last):
File "./shimmer", line 97, in <module>
cv2.imwrite('/home/christos/portrait-out.jpg', result)
TypeError: Expected Pre<cv::UMat> for argument 'img'
这发生在创建图像时,baseline = Image.open('/home/christos/portrait-new-mini.jpg')
。
在搜索过程中,我发现了类似的报告错误,但没有明确说明“这是什么有效,原因是什么。”
我也看到过类似的工作没有类似的记录困难的页面。
如果需要,我可以发布我的代码,但我猜测问题是由 cv2.imwrite()
调用和我想要提供调用的东西狭隘地定义的。
【问题讨论】:
cv2 有自己的读取图像的方法 -cv2.imread()
- 它会创建 numpy
数组。 Pillow
以不同的格式保存它,您可能必须在保存之前将其转换为 numpy
数组 - 我记得 cv2_img = numpy.array(pillow_image)
BTW:如果 pillow
可以保存它,为什么要使用 cv2
保存它?
顺便说一句:cv2
默认使用BGR
而不是RGB
,您可能需要在保存之前对其进行转换。 img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
【参考方案1】:
似乎您在 Pillow 中打开图像并尝试使用 OpenCV 保存 Pillow 图像。 OpenCV 需要一个 numpy 数组。你应该先转换你的图像,然后再用 opencv 写入文件。
查看此帖子:https://***.com/a/14140796/13103631
我想,它会解决你的问题
【讨论】:
谢谢。它确实解决了这个问题,所以我可以处理下一个问题。 欢迎来到 *** 并感谢您的帮助!我希望这个社区可以帮助你实现一些目标。以上是关于如何将 cv2 / Pillow-modified 图像写入磁盘?的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV的,如何将参数传递到cv2.TrackerMedianFlow_create功能?
如何在多个图像上使用 cv2.split 和 cv2.merge?
如何将 cv2.imread 匹配到 keras image.img_load 输出