使用 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),现在您的行应该看起来不错。