为什么cv2.line不能在1通道numpy阵列片上绘制?你知道吗
print('cv2.__version__', cv2.__version__)
# V1
print('-'*60)
a = np.zeros((20,20,4), np.uint8)
cv2.line(a[:,:,1], (4,4), (10,10), color=255, thickness=1)
print('a[:,:,1].shape', a[:,:,1].shape)
print('np.min(a), np.max(a)', np.min(a), np.max(a))
# V2
print('-' * 60)
b = np.zeros((20,20), np.uint8)
cv2.line(b, (4,4), (10,10), color=255, thickness=1)
print('b.shape', b.shape)
print('np.min(b), np.max(b)', np.min(b), np.max(b))
输出:
cv2.__version__ 4.1.0
------------------------------------------------------------
a[:,:,1].shape (20, 20)
np.min(a), np.max(a) 0 0
------------------------------------------------------------
b.shape (20, 20)
np.min(b), np.max(b) 0 255
似乎错误消息取决于opencv版本:
cv2.__version__ 3.4.3
------------------------------------------------------------
Traceback (most recent call last):
File "test_me.py", line 11, in <module>
cv2.line(a[:,:,1], (4,4), (10,10), color=255, thickness=1)
TypeError: Layout of the output array img is incompatible with cv::Mat (step[ndims-1] != elemsize or step[1] != elemsize*nchannels)
有趣的问题。考虑到错误:
我认为这可能是由于numpy中的视图/副本之间的差异造成的。read1read2
作为比较,以下情况不起作用:
但以下情况确实如此:
相关问题 更多 >
编程相关推荐