繁体   English   中英

如何将 python np.array 转换为 cv2 图像

[英]How to convert python np.array to cv2 image

以下代码:

img = np.array([[[1,2,4]]])
cv2.subtract(img, tuple([1.0]))

结果错误:

Traceback(最近一次调用最后):文件“”,第 1 行,在 cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-nxx381if\opencv \modules\core\src\arithm.cpp:671: error: (-215:Assertion failed) type2 == CV_64F && (sz2.height == 1 || sz2.height == 4) in function 'cv::arithm_op '

如果我将 img 更改为:

img = np.array([[[1,2,4],[1,2,4],[1,2,4],[1,2,4],[1,2,4]]])

然后它可以正常工作

在我的情况下,我有不同尺寸的图像 mono 和颜色,我想减去饱和度的常数值。 形状是 HxWx1 或 HxWx3(不同的数据类型)如何正确使用 cv2.subtract 处理这种情况?

编辑:我想保持高性能并避免分配临时 arrays / 类型转换

您可以从 numpy 数组中减去一个常数值:

img = np.array([[[1,2,4],[1,2,4],[1,2,4],[1,2,4],[1,2,4]]])
img_new=img-1

或者如果你想使用 cv2.substract:

constant = 3
img_new_2=cv2.subtract(img, constant*np.ones(img.shape).astype(type(img[0,0,0])))

编辑:如果要使用 opencv 显示此图像,则必须将其转换为有效类型。

cv2.imshow("window", img_new_2.astype(np.int8))
cv2.waitKey(0)
cv2.destroyAllWindows()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM