在python中使用带有矩形的图像

时间:2014-05-18 15:07:43

标签: python opencv computer-vision draw

我在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得到此错误,而不是在

之后。

3 个答案:

答案 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