如何将 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 numpy数组转换为QImage时如何配置颜色?

如何在多个图像上使用 cv2.split 和 cv2.merge?

如何将 cv2.imread 匹配到 keras image.img_load 输出

如何使用 cv2.fisheye.undistortPoints 将扭曲空间中的点转换为未扭曲空间中的点?

如何在 python 包中添加 cv2 作为要求?