我在python中使用cv2.rectangle
在我的图像上绘制一个框。
image1
已正确加载。
然后我使用这段代码:
cv2.rectangle(image1, (10, 10), (100, 100), (255,0,0), 2)
cv2.imshow('img', image1)
但是我收到了这个错误:
TypeError: Layout of the output array img is incompatible with cv::Mat (step[ndims-1] != elemsize or step[1] != elemsize*nchannels)
无论我在使用cv2.rectangle
后对图像做什么,都会出错。如何检索或使用我绘制矩形的图像?
更正,我在上使用cv2.rectangle得到此错误,而不是在
之后。答案 0 :(得分:2)
cv2.imread
对我来说不是一个很好的解决方案 - 我必须先将图像写回磁盘。
我能够继续image = image.copy()
。
不确定根本原因是什么 - 等式检查显示数组的每个值都是等价的,并且数组是正确的类型。 ¯\_(ツ)_/¯
答案 1 :(得分:0)
此代码应该按您的要求执行:
import cv2
im = cv2.imread('<path to image>')
cv2.rectangle(im, (10, 10), (100, 100), (255,0,0), 2)
im = cv2.cv.fromarray(im)
cv2.cv.SaveImage("<path you want to save image in>", im)
答案 2 :(得分:0)
此问题似乎是由numpy版本引起的。版本1.6.2似乎会导致此错误,但此问题在1.9.2中不存在,只需升级它:
pip install numpy --upgrade
在Debian 7.8(kern 3.2)和Debian 8.0(kern 4.2)上测试OpenCV 2.4.9