opencv python cv2.line仅适用于某些像素值

时间:2018-08-20 13:10:21

标签: python opencv jupyter

Result image link

我正在使用cv2.line在图像上绘制垂直线。该命令适用于某些像素值,但不适用于所有像素。例如,我可以画一条穿过像素(21,1)到(21,450)的直线,但不能穿过(160,1)到(160,450)的直线。我确定我的图片大于160像素。我使用了不同的值,在我看来,打印行的值和不打印行的值是随机的。这是我的代码(我正在使用Jupiter Notebook):

new_im = cv2.cvtColor(edge, cv2.COLOR_GRAY2RGB)
cv2.line(new_im,(21,1),(21,450),(255,0,0),1)
cv2.line(new_im,(50,1),(50,450),(255,0,0),1)
cv2.line(new_im,(100,1),(100,450),(255,0,0),1)
cv2.line(new_im,(150,1),(150,450),(255,0,0),1)
cv2.line(new_im,(155,1),(155,450),(255,0,0),1)
cv2.line(new_im,(165,1),(165,450),(255,0,0),1) 
plt.imshow(new_im)
plt.show()

我也尝试更改行的顺序,但得到的结果相同。有些行已打印,有些则没有。

1 个答案:

答案 0 :(得分:0)

在某些后端中显示defaults到最近的邻居插值。

如果视图小于原始图像,则某些行可能会被丢弃而根本不显示。

通过显式设置适当的插值字符串(例如,双线性的:

plt.imshow(new_im, interpolation="bilinear")