使用cv2.line绘制线条时图像方向不正确

时间:2018-02-21 22:05:54

标签: python image rotation cv2

我想在图像上从左上角到右下角画一条线 图像是水平的,并且:

print(size)

返回:

(203, 248)

使用我的代码,我期待从像素(0,0)到像素(203,248)的对角线。但是我得到了从像素(0,0)到像素(248,203)的对角线,它在图像边界之外(sic!)。 我想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()

Image with line incorrectly drawn on top

1 个答案:

答案 0 :(得分:0)

这是因为NumPy基于行优先原则(即你的形状是(行,列))索引数组,cv2索引基于(x,y)坐标,意味着轴被翻转。这可能很烦人,但这应该可以解决您的问题:

尝试更改:

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),你的行现在应该看起来很好。