opencv图像处理

// 提取路口轮廓集合(每个路口的轮廓为一系列点集)
std::vector<std::vector<cv::Point>> node_contours;
std::vector<cv::Vec4i> node_hierarchy;保存轮廓的层次关系
                                         // 只提取外轮廓 轮廓近似方法:水平垂直对角线只保留端点
cv::findContours(node_mat, node_contours, node_hierarchy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
for (size_t i = 0; i < line_contours.size(); i++) {
// 为每个轮廓创建一个独立的图像
cv::Mat contour_mask = cv::Mat::zeros(road_line_mat.size(), CV_8UC1);
                                             //要绘制的轮廓索引 -1表示绘制全部
cv::drawContours(contour_mask, line_contours, static_cast<int>(i), cv::Scalar(255), -1);
std::string filename = "./tmp_line_png/output_contour_" + std::to_string(i) + ".jpg";
        // 将该轮廓的图像保存到文件
        cv::imwrite(filename, contour_mask);
    }

cv::Mat line_connect_image = cv::Mat::zeros(road_line_mat.size(), CV_8UC1);//新建一个与路线图相同大小的黑白图像
// 轮廓进行填充    在此图上绘制轮廓        所有线轮廓    当前轮廓索引 白色   填充模式  线型  层次信息
cv::drawContours(line_connect_image, line_contours, index, 255, cv::FILLED, 8, line_hierarchy);
cv::Mat contour_mask = cv::Mat::zeros(road_line_mat.size(), CV_8UC1);
cv::polylines(contour_mask, line_connect_points, false, cv::Scalar(255), 2);
std::string filename = "./tmp_line_png/output_segments_" + std::to_string(index) +".jpg";
cv::imwrite(filename, contour_mask);

使用cv::polylines函数在contour_mask图像上绘制由
line_connect_points定义的多边形线段。false参数表示多边形是否闭合,
cv::Scalar(255)表示线段的颜色(这里是白色),2表示线段的厚度为2个像素。


 

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值