为什么我的cv2.line显示为矩形而不是线?

时间:2017-12-19 11:21:02

标签: python-3.x opencv matplotlib opencv3.0

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = np.zeros([10,10,3],dtype=np.uint8)

t2 = (2, 0) 
t3 = (0, 0)
cv2.line(img,t2,t3,(0,0,255),2,8)
plt.imshow(img)
plt.show()

输出

enter image description here

我玩了厚度和线型。无论如何,它都无法提供支持!

修改 在建议评论后,我尝试了不同的值,不在边缘,(4,5)和(2,5)。

厚度= 2

cv2.line(img,t2,t3,(0,0,255),2,8)

enter image description here

厚度= 0

cv2.line(img,t2,t3,(0,0,255),0,8)

enter image description here

1 个答案:

答案 0 :(得分:0)

您的代码img = np.zeros([10,10,3],dtype=np.uint8)告诉我您的图片尺寸为10x10像素。这样你就不会像在代码示例中那样请求以这种方式显示一条像样的线。您可以放大约6400倍或更多。 t3位于t2的左边(这不是逻辑,除非..阿拉伯语阅读方法(从右到左)被应用)所以..lets缩小至少2-100次,并将t2左侧t2,看看会发生什么!

方法:

放大您的图片..让我们说你的阵列达到100x100像素......然后cv2.line(img,t2,t3,(0,0,255),2,8)的建议线也会缩小,并且比例也会缩小...... t2 &安培; t3 成为t2 = (20, 10)&换句话说,t3 = (40, 10) ......它看起来就像我们通常希望看到的那样看起来像一个矩形或一条线。如果再次缩小并且你的np阵列变为1000x1000 ...如果需要调整t2和t3坐标,然后告诉我们你的问题是否仍然存在或已经解决。

根据你的例子,我修改它以显示我的意思:

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = np.zeros([100,100,3],dtype=np.uint8)  # imagesize

t2 = (20, 10)                               # left coordinate of line.
t3 = (40, 10)                               # right coordinate of line
cv2.line(img,t2,t3,(0,0,255),2,8)
plt.imshow(img)
plt.show()

自己动手:放松并阅读我的个人笔记...最重要的是......使用代码来查看diagonal line中您希望看到的内容的变化。享受!

个人注意事项:

  Tahlil:呼吸......然后......我的朋友......没有人在和你玩弄!我们不做功课,而是帮助您提高技能,提问方法,洞察您提出的问题并帮助您找到解决方案。作为回报,我们希望您也能帮助他人。默认情况下,Toying会被标记并删除(几乎)!

     

正如你在 sgarizvi 所说的那样回答答案......我为你提供了一个答案和见解如何改进......我现在可以得到我的饼干了......拜托。享受生活和在SO的逗留; - )