使用 cv2.line 画线时图像方向不正确
Incorrect image orientation when drawing a line with cv2.line
我想在图像上从左上角到右下角画一条线。
图像是水平的并且:
print(size)
returns:
(203, 248)
在我的代码中,我期望从像素 (0,0) 到像素 (203, 248) 的对角线。但是,我得到了从像素 (0,0) 到图像边界外的像素 (248, 203) 的对角线(原文如此!)。
我想 cv2.line 方法会以某种方式旋转图像,有人可以建议吗?
这是我的代码:
import cv2
image_1 = cv2.imread('profilowe.jpeg',0)
size = image_1.shape
print(size)
cv2.line(image_1,(0,0),image_1.shape,255,1,16)
cv2.imshow('image',image_1)
cv2.waitKey(0)
cv2.destroyAllWindows()
发生这种情况是因为虽然 NumPy 索引数组基于 row-first 原则(即你的形状是(行,列)),但 cv2 索引基于(x,y)co-ordinates,这意味着轴被翻转。这可能很烦人,但这应该可以解决您的问题:
尝试更改:
cv2.line(image_1, (0,0), image_1.shape, 255, 1, 16)
到
cv2.line(image_1, (0,0), image_1.shape[::-1], 255, 1, 16)
[::-1]
将元组翻转为 (248, 203)
,现在您的行应该看起来不错。
我想在图像上从左上角到右下角画一条线。
图像是水平的并且:
print(size)
returns:
(203, 248)
在我的代码中,我期望从像素 (0,0) 到像素 (203, 248) 的对角线。但是,我得到了从像素 (0,0) 到图像边界外的像素 (248, 203) 的对角线(原文如此!)。 我想 cv2.line 方法会以某种方式旋转图像,有人可以建议吗?
这是我的代码:
import cv2
image_1 = cv2.imread('profilowe.jpeg',0)
size = image_1.shape
print(size)
cv2.line(image_1,(0,0),image_1.shape,255,1,16)
cv2.imshow('image',image_1)
cv2.waitKey(0)
cv2.destroyAllWindows()
发生这种情况是因为虽然 NumPy 索引数组基于 row-first 原则(即你的形状是(行,列)),但 cv2 索引基于(x,y)co-ordinates,这意味着轴被翻转。这可能很烦人,但这应该可以解决您的问题:
尝试更改:
cv2.line(image_1, (0,0), image_1.shape, 255, 1, 16)
到
cv2.line(image_1, (0,0), image_1.shape[::-1], 255, 1, 16)
[::-1]
将元组翻转为 (248, 203)
,现在您的行应该看起来不错。