我想使用 OpenCV 在透明背景上绘制一个白色圆圈,我为此使用代码:
cv::Mat m(500, 500, CV_8UC4, cv::Scalar(0, 0, 0, 0));
cv::circle(m, cv::Point(250, 250), 100, cv::Scalar(255, 255, 255, 255), 10, cv::LINE_AA);
cv::imwrite("img.png", m);
轮廓颜色取决于透明背景的“颜色” - 如果我在上面画圆
cv::Mat m(500, 500, CV_8UC4, cv::Scalar(0, 0, 255, 0));
轮廓是红色的。
如何避免这种情况并绘制没有轮廓的圆?
答案 0 :(得分:0)
只需使用 cv::LINE_8
而不是 cv::LINE_AA
。关键是 cv::LINE_AA
在边界处产生平滑的颜色过渡,这通常会使图像更平滑,但在这种情况下,由于背景是透明的,因此看起来像一个轮廓。
或者你可以使用
cv::Mat m(500, 500, CV_8UC4, cv::Scalar(255, 255, 255, 0));
并在 cv::LINE_AA
给定的边界处保持平滑的透明度渐变,但是如果您在其上用 cv::LINE_AA
绘制其他非白色的东西,您仍然会在其周围获得白色轮廓。< /p>