Traceback TypeError: Expected Ptr<cv::UMat> for argument 'img'. when try to delete columns and draw lines
Traceback TypeError: Expected Ptr<cv::UMat> for argument 'img'. when try to delete columns and draw lines
我想删除原始图像中的一些列,然后画一条线(或矩形或...)。如果我先画线然后删除列:
img = cv2.imread('image.jpg',0)
cv2.line(img,pt1=(0,0),pt2=(711,711),color=(102, 255, 255),thickness=10)
img= np.delete(img,list(range(400,500)),1)
plt.imshow(img,"gray")
没问题。但是当我先放下列然后画一条线(或矩形或其他..)
img = cv2.imread('image.jpg',0)
img= np.delete(img,list(range(400,500)),1)
cv2.line(img,pt1=(0,0),pt2=(711,711),color=(102, 255, 255),thickness=5)
plt.imshow(img,"gray")
有趣的是,这似乎不是行的问题,甚至复制问题仍然存在。不是维度的问题,也尝试丑陋的解决方案转置
img= np.delete(img.T, list(range(400,500)),0),T
cv2.line(img,pt1=(0,0),pt2=(711,711),color=(102, 255, 255),thickness=5)
plt.imshow(img,"gray")
但还是不行。
真是奇怪的情况。
print(type(img))
之前和之后 np.delete()
显示 <class 'numpy.ndarray'>
所以我不知道是什么问题。
但是如果我使用 .copy()
那么它就可以正常工作。
img = np.delete(img, list(range(400,500)), 1).copy()
#img = np.delete(img.T, list(range(400,500)), 0).T.copy()
cv2.line(img, pt1=(0,0), pt2=(711,711), color=(102, 255, 255), thickness=10)
也许 np.delete()
是一些“惰性”函数,它不会直接创建新的 numpy,而是在需要时创建,但在 cv2.line()
[=19 中需要时它不会创建=]
也许您应该将此问题发送给 numpy
或 cv2
的作者
我想删除原始图像中的一些列,然后画一条线(或矩形或...)。如果我先画线然后删除列:
img = cv2.imread('image.jpg',0)
cv2.line(img,pt1=(0,0),pt2=(711,711),color=(102, 255, 255),thickness=10)
img= np.delete(img,list(range(400,500)),1)
plt.imshow(img,"gray")
没问题。但是当我先放下列然后画一条线(或矩形或其他..)
img = cv2.imread('image.jpg',0)
img= np.delete(img,list(range(400,500)),1)
cv2.line(img,pt1=(0,0),pt2=(711,711),color=(102, 255, 255),thickness=5)
plt.imshow(img,"gray")
有趣的是,这似乎不是行的问题,甚至复制问题仍然存在。不是维度的问题,也尝试丑陋的解决方案转置
img= np.delete(img.T, list(range(400,500)),0),T
cv2.line(img,pt1=(0,0),pt2=(711,711),color=(102, 255, 255),thickness=5)
plt.imshow(img,"gray")
但还是不行。
真是奇怪的情况。
print(type(img))
之前和之后 np.delete()
显示 <class 'numpy.ndarray'>
所以我不知道是什么问题。
但是如果我使用 .copy()
那么它就可以正常工作。
img = np.delete(img, list(range(400,500)), 1).copy()
#img = np.delete(img.T, list(range(400,500)), 0).T.copy()
cv2.line(img, pt1=(0,0), pt2=(711,711), color=(102, 255, 255), thickness=10)
也许 np.delete()
是一些“惰性”函数,它不会直接创建新的 numpy,而是在需要时创建,但在 cv2.line()
[=19 中需要时它不会创建=]
也许您应该将此问题发送给 numpy
或 cv2