我使用houghLines变换来检测图像中的线条,然后使用cv :: line()函数在单独的Mat图像上绘制由此检测到的线条。 请注意,houghLinesP检测到的线通常彼此重叠且数量很多。 (即使图像中有1行,它也会检测到相邻行的数量)
for (size_t i = 0; i < lines.size(); i++)
{
Vec4i l = lines[i];
line(src, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0, 255, 0), 10, CV_AA);
}
我想画出纯绿色的线条而没有任何透明度。但是在结果图像中,我注意到边缘的一些线是透明的。 (或线条边框模糊)以下是我拍摄图像的一部分。
我想避免这种情况。我希望线条有锋利的边缘,不应该有任何透明度。怎么做?
答案 0 :(得分:4)
CV_AA
标志告诉cv::line()
绘制 A nti- A 专线。这是透明线条边框像素的来源
如果删除CV_AA
标记,则该线将被绘制为锯齿状,但没有透明胶片(Bresenham)。
仔细观察图像,彩色区域内有可见的JPG伪影(零星的暗点)。这些工件不存在于内存中的图像中,但会出现在JPG保存的文件中。尝试将图像保存为PNG。