OpenCV的Rect()函数、Rectangle()函数、matchTemplate()参数详解

您所在的位置:网站首页 c语言rect OpenCV的Rect()函数、Rectangle()函数、matchTemplate()参数详解

OpenCV的Rect()函数、Rectangle()函数、matchTemplate()参数详解

2023-09-20 16:58| 来源: 网络整理| 查看: 265

OpenCV的函数 Rect()函数cvRectangle与cv::rectanglematchTemplate()归一化函数normalize()

Rect()函数

基本概念: Rect(int x, int y, int width, int height);

参数含义: Rect(左上角x坐标 , 左上角y坐标,矩形的宽,矩形的高) 例如我们画一个图 Rect(20,50,30,40), 我用matlab画了一下,比较直观 在这里插入图片描述 代码:

Rect(0, 0.4 * img1.rows, 0.2 * img1.cols, 0.2 * img1.rows)

那对于Rect(20,50,30,40)有哪些常用的操作?

rect.area(); //返回面积,1200 rect.size();//返回尺寸,30x40 rect.tl();// 返回左上角坐标(20,50) rect.br();//返回右下角坐标(50,10) rect.width();//返回宽度30 rect.height();//返回高度40 rect.contains(Point(x,y)) ; //返回布尔true/false, 判断x,y是否在这个矩形中

交集、并集, 矩阵对比,很像C语言

rect = rect1 & rect2; rect = rect1 | rect2; rect1 == rect2; //返回布尔值 rect1 != rect2 ; //返回布尔值

Rectangle用法

void cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 ); img: 图像. pt1 :矩形的一个顶点。 pt2:矩形对角线上的另一个顶点 color:线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。 //后面这三个都是可有可没有的 thickness:组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。 line_type:线条的类型。见cvLine的描述 shift:坐标点的小数点位数。

举例子:

rectangle(img, box.tl(), box.br(), Scalar(g_rng.uniform(0, 255), g_rng.uniform(0, 255), g_rng.uniform(0, 255)));//随机颜色 cvRectangle与cv::rectangle

在第一次使用cvRectangle绘制矩形的时候遇到一个问题:Error:不存在从“cv::Mat”到"CvArr*"的适当转换函数,就特意查了查资料,总结如下。

cvRentangle和cv::rectangle函数原型对比:

C: void cvRectangle(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 ) C++: void rectangle(Mat& img, Point pt1,Point pt2,const Scalar& color, int thickness=1, int lineType=8, int shift=0) C++: void rectangle(Mat& img, Rect rec, const Scalar& color, int thickness=1, int lineType=8, int shift=0 )

参数介绍:

img 图像. pt1 矩形的一个顶点。 pt2 矩形对角线上的另一个顶点 color 线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。 thickness 组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。 line_type 线条的类型。见cvLine的描述 shift 坐标点的小数点位数。

代码:

#include #include using namespace std; using namespace cv; int main() { char *imageSrc = "I:\\OpenCV Learning\\picture\\sumpalace.jpg"; Mat matImage = imread(imageSrc,-1); IplImage *iplImage = cvLoadImage(imageSrc,-1); if(matImage.data==0||iplImage->imageData ==0) { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3