opencv 实现等值线_OpenCV:检查像素是否在边界矩形内,由等高线分隔

本文介绍了如何使用OpenCV处理带有边缘的图像,并通过等值线将轴对齐矩形内的区域分为左右两部分。通过旋转、边界框计算、floodFill算法和坐标转换,实现了对轮廓内像素的精确分离,分别用蓝色和红色表示左侧和右侧区域。
摘要由CSDN通过智能技术生成

我有一个形象面具,有一些我从Canny那里得到的轮廓。 我可以计算一个边界矩形(具有固定的给定角度)。

现在我需要将这两个区域分离到该矩形的左侧和右侧。 我怎样才能做到这一点?

请注意,我想要处理矩形内的区域,而不是轮廓的像素。

编辑

这是我如何从掩码获取每个边界矩形:cv::Mat img_edges; // mask with contours

// Apply clustering to the edge mask from here

// http://stackoverflow.com/questions/33825249/opencv-euclidean-clustering-vs-findcontours?noredirect=1#comment55433731_33825249

// Find boundary rectangle

for (auto &contour: contours) { // Iterate over every contour cluster

cv::Mat Srot = cv::getRotationMatrix2D(cv::Point2f(float(img_edges.cols) / 2., float(img_edges.rows) / 2.), -ILLUMINATION_ANGLE_DEG, 1.0);

cv::transform(contour, contour, Srot);

float min_x, min_y, max_x, max_y;

min_x = min_y = std::numeric_limits::max();

max_x = max_y = -std::numeric_limits::max();

// Simply find edges of al

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值