【OpenCV图像处理】 boundingRect函数详解(39
2019-06-02 本文已影响3人
307656af5a04
1、boundingRect函数简介
boundingRect函数是用来计算轮廓的最小外接矩形,通常与findContours函数组合使用,findContours函数用来查找图像的轮廓,boundingRect获取轮廓的最小外接矩形!
2、函数原型
Rect boundingRect( InputArray array );
3、参数详解
(1) 第一个参数,InputArray array,一般为findContours函数查找的轮廓,包含轮廓的点集或者Mat;
(2) 返回值,Rect,返回值为最小外接矩形的Rect,即左上点与矩形的宽度和高度;
4、实验实例
#include <opencv2/opencv.hpp>
#include <vector>
using namespace cv;
int main()
{
// 载入图像,默认为彩色图像
Mat src = imread("rect.png", 1);
// 判断图像是否正确加载
if (src.empty())
{
printf("image is empty !");
return -1;
}
// 备份原始图像,用来显示查找的轮廓
Mat dst = src.clone();
// 彩色图像转换为灰度图像
cvtColor(src, dst,COLOR_BGR2GRAY);
// 对图像进行二值化处理
threshold(dst, dst, 128, 255, THRESH_BINARY_INV);
imshow("te", dst);
std::vector<std::vector<Point> > contours;
std::vector<Vec4i> hierarchy;
// 查找图像的轮廓 查找的轮廓为白色区域的轮廓
findContours(dst, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);
// 定义外接矩形
std::vector<Rect> boundRect(contours.size());
for (int i =0;i<contours.size();i++)
{
// 获取最小外接矩形
boundRect[i] = boundingRect(contours[i]);
// 在原图像上绘制最小外接矩形
rectangle(src, boundRect[i], Scalar(0, 255, 0));
}
namedWindow("效果图");
imshow("效果图", src);
waitKey(0);
return 0;
}
5、实验结果
图像中用绿色框框中的区域为查找的轮廓,为什么需要用到boundingRect函数呢,一般情况下白色中出现黑色意味着这个黑色区域为图像中的缺陷,为了检测这个缺陷,才会有findContours函数与boundingRect函数!
boundingRect函数详解我是奕双,现在已经毕业将近两年了,从大学开始学编程,期间学习了C语言编程,C++语言编程,Win32编程,MFC编程,毕业之后进入一家图像处理相关领域的公司,掌握了用OpenCV对图像进行处理,如果大家对相关领域感兴趣的话,可以关注我,我这边会为大家进行解答哦!如果大家需要相关学习资料的话,可以私聊我哦!