OpenCV-矩形边框cv::boundingRect

简介: OpenCV-矩形边框cv::boundingRect

函数原型

cv::Rect boundingRect( InputArray array );

参数说明

输入:InputArray类型的array,输入灰度图像或二维点集。

输出:Rect类型的矩形信息,包括矩形尺寸和位置。

测试代码

#include <iostream>
#include <time.h>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
  cv::Mat src = imread("test.png",0);
  cv::Mat result = src.clone();
  cv::Mat th1;
  // 最大类间差法,也称大津算法
  threshold(result, th1, 0, 255, THRESH_OTSU);
  // 反相
  th1 = 255 - th1;
  // 确定连通区轮廓
  std::vector<std::vector<cv::Point> > contours;  // 创建轮廓容器
  std::vector<cv::Vec4i>  hierarchy;
  cv::findContours(th1, contours, hierarchy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE, cv::Point());
  // 遍历轮廓显示矩形框
  for (int i = 0; i < contours.size(); ++i)
  {
    cv::Rect rect = cv::boundingRect(cv::Mat(contours[i]));
    cv::rectangle(result, rect, Scalar(255), 1);
  }
  imshow("original", src);
  imshow("thresh", th1);
  imshow("result", result);
  waitKey(0);
  return 0;
}

测试效果

图1 灰度原图

图2 阈值图

图3 连通区矩形框效果图

      这个函数得到的矩形框都是方正的,还有一个函数minAreaRect也可以得到最小包围矩形框,那个是带倾斜角度的,后面我会再写一篇文章介绍。

      如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

相关文章
|
4月前
|
API C++ 计算机视觉
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
|
5月前
|
计算机视觉 Python
OpenCV中线段、矩形、圆形、多边形的讲解与绘制实战(附Python源码)
OpenCV中线段、矩形、圆形、多边形的讲解与绘制实战(附Python源码)
48 0
|
4天前
|
计算机视觉
OpenCV报错: cv::Exception,位于内存位置 0x00000078226FEE58 处。
OpenCV报错: cv::Exception,位于内存位置 0x00000078226FEE58 处。
|
2月前
|
计算机视觉
OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
90 0
|
7月前
|
计算机视觉
OpenCV-模板匹配cv::matchTemplate
OpenCV-模板匹配cv::matchTemplate
|
4月前
|
计算机视觉 Python
opencv cv::Range()和cv::Rect()用于crop来获得感兴趣区域
opencv cv::Range()和cv::Rect()用于crop来获得感兴趣区域
42 0
|
5月前
|
计算机视觉
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
46 0
|
5月前
|
数据安全/隐私保护 计算机视觉
opencv边缘检测加提取(圆形和矩形)
opencv边缘检测加提取(圆形和矩形)
39 0
|
7月前
|
算法 计算机视觉
OpenCV-漫水填充cv::floodFill
OpenCV-漫水填充cv::floodFill
|
7月前
|
计算机视觉
OpenCV-最小包围旋转矩形边框cv::minAreaRect
OpenCV-最小包围旋转矩形边框cv::minAreaRect