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

问题描述 投票:0回答:1
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

python-3.x opencv matplotlib opencv3.0
1个回答
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的逗留;-)

© www.soinside.com 2019 - 2024. All rights reserved.