图像处理生活、文字💅世间语

【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对图像进行处理,如果大家对相关领域感兴趣的话,可以关注我,我这边会为大家进行解答哦!如果大家需要相关学习资料的话,可以私聊我哦!

上一篇下一篇

猜你喜欢

热点阅读