[英]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.