opencv - 聚opencv半透明

标签 opencv line contour polyfills

我的问题是针对 Opencv 专家的,我已经检测到道路线(左线和右线),所以我的目标是用半透明蓝色绘制道路区域。所以我用了:

cv::fillPoly(image, ppt, npt, 1, CV_RGB(0, 0,200), lineType);

ppt-包含左右的点, npt-点数

但是,我得到的东西充满了道路上的区域,这不是我的目标。

所以,我的问题是,有什么办法可以把道路区域涂成半透明的吗?我被告知要添加另一个 channel ,例如:

cv::Mat channel[3];
split(image, channel); 
    channel[0] = cv::Mat::zeros(image.rows, image.cols, CV_8UC1);
     merge(channel, 3, image);cv::imshow("kkk",image); 

但问题是我得到的所有图像都是半透明的,我只想要道路区域。任何想法表示赞赏!!

谢谢

最佳答案

试试这段代码(无法在手机上测试):

cv::Mat polyImage = cv::Mat(image.rows, image.cols, CV_8UC3,cv::Scalar (0,0,0));
cv::fillPoly(polyImage, ppt, npt, 1, CV_RGB(0, 0,200), lineType);

float transFactor = 0.5f; // the bigger the more transparent

for(int y=0;y <image.rows;++y)
    for(int x=0;x <image.cols; ++x)
    {
        if(polyImage.at<cv::Vec3b>(y,x) != cv::Vec3b(0,0,0) )
            image.at<cv::Vec3b>(y,x) = (transFactor)*image.at<cv::Vec3b>(y,x) + (1.0f - transFactor)*polyImage.at<cv::Vec3b>(y,x);
    }

关于opencv - 聚opencv半透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36805703/

相关文章:

python - 如何在opencv中定义阈值以便将整行放在一起,包括python中的空格

python - 如何掩盖这两个图像,所以我只得到大圆圈?

python-3.x - 我还可以使用哪些方法来提取图像中的有效补丁?

java - Java行代码错误

python - 使用 pandas python 绘制 x 轴线图

Android位图轮廓

python - 如何确定轮廓中每条边的长度?

qt - 在Windows中使用Qt配置openCV

android - "JavaCameraView"摄像头方向问题

ruby - 在 Ruby 中编辑文件中的每一行