为什么使用 cv::line 函数绘制的不同线条具有不同的透明度 (alpha) 级别?
Why different lines drawn using cv::line function has different transparency (alpha) levels?
我使用 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);
}
我想用没有任何透明度的纯绿色绘制线条。但在生成的图像中,我注意到边缘的一些线条是透明的。 (或者线条的边界模糊)以下是我生成的图像的一部分。
我想避免这种情况。我想要线条有锋利的边缘,不应该有任何透明度。怎么做?
CV_AA
标志告诉 cv::line()
绘制一条 Anti-A 连线。这是您的透明线边框像素的来源。
如果删除 CV_AA
标志,线条将被绘制成锯齿状,但没有透明胶片 (Bresenham)。
仔细观察图像,在彩色区域(零星的暗点)内有可见的 JPG 伪影。这些伪影不存在于内存中的图像中,但会出现在 JPG 保存的文件中。尝试将图像另存为 PNG。
我使用 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);
}
我想用没有任何透明度的纯绿色绘制线条。但在生成的图像中,我注意到边缘的一些线条是透明的。 (或者线条的边界模糊)以下是我生成的图像的一部分。
我想避免这种情况。我想要线条有锋利的边缘,不应该有任何透明度。怎么做?
CV_AA
标志告诉 cv::line()
绘制一条 Anti-A 连线。这是您的透明线边框像素的来源。
如果删除 CV_AA
标志,线条将被绘制成锯齿状,但没有透明胶片 (Bresenham)。
仔细观察图像,在彩色区域(零星的暗点)内有可见的 JPG 伪影。这些伪影不存在于内存中的图像中,但会出现在 JPG 保存的文件中。尝试将图像另存为 PNG。