opencv(12):cv::rectangle学习与代码演示,使用opencv画矩形/矩形框

本文详细介绍了OpenCV库中的cv::rectangle函数,包括其功能、C++和Python代码实现,并通过示例展示了如何绘制简单和填充的矩形。重点讲解了矩形顶点指定和Rect结构的使用,适合初学者理解图像处理中基本的形状绘制。
摘要由CSDN通过智能技术生成

1 cv::rectangle介绍

1.1 功能:

        绘制一个简单的、粗的或填充的直角矩形或直角矩形框。

1.2 c++代码形式

rectangle() [1/2]

#include <opencv2/imgproc.hpp>

void cv::rectangle 	( 	InputOutputArray  	img,
		Point  	pt1,
		Point  	pt2,
		const Scalar &  	color,
		int  	thickness = 1,
		int  	lineType = LINE_8,
		int  	shift = 0 
	) 	

img     图像。
pt1      矩形的顶点。
pt2      与 pt1 相对的矩形的顶点。意思是pt1和pt2是对角顶点
color   颜色或亮度(灰度图像)。
thickness     构成矩形的线条的厚度。负值,如 FILLED、-1,意味着函数必须绘制一个填充的矩形。
lineType    线的类型。
shift    点坐标中的小数位数,一般取0,因为像素一般都是整型值。

rectangle() [2/2]

#include <opencv2/imgproc.hpp>
#include <opencv2/core/types.hpp>//针对第二个参数rec

void cv::rectangle 	( 	Mat &  	img,
		Rect  	rec,
		const Scalar &  	color,
		int  	thickness = 1,
		int  	lineType = LINE_8,
		int  	shift = 0 
	) 	

 其中第二个参数rec代表矩形边框,且有:typedef Rect2i cv::Rect ,示例如下:

//Rect(int a,int b,int c,int d)a,b为矩形的左上角坐标,c,d为矩形的长和宽
Rect rec1;
rec1=Rect(10,10,5,5);

1.3 python代码形式

cv.rectangle(	img, pt1, pt2, color[, thickness[, lineType[, shift]]]	)

参数参考1.2

2 c++代码演示:

cv_rectangle_test.cpp

2.1 演示1

#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>
using namespace cv;


int main( int argc, char** argv )
{
    cv::Scalar color,color1;
    color[0]=0;color[1]=0;color[2]=255;//    红色
    color1[0]=0;color1[1]=255;color1[2]=0;//绿色
    cv::Mat image = cv::Mat::zeros(cv::Size(20, 20), CV_8UC3);


    cv::rectangle(image,cvPoint(9,9),cvPoint(9,9),color1,1,1,0);//两个顶点相同,画一个点
    cv::rectangle(image,cvPoint(10,10),cvPoint(19,19),color,1,1,0);//矩形的两个顶点,两个顶点都包括在矩形内部

    
    cv::namedWindow("image", cv::WINDOW_NORMAL);
    cv::imshow("image",image);
    cv::waitKey(0);

}

代码执行效果:

2.2 演示2

#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include <opencv2/core/types.hpp>//针对第二个参数rec
#include <iostream>
using namespace cv;


int main( int argc, char** argv )
{
    cv::Scalar color,color1;
    color[0]=0;color[1]=0;color[2]=255;//    红色
    color1[0]=0;color1[1]=255;color1[2]=0;//绿色
    cv::Mat image = cv::Mat::zeros(cv::Size(20, 20), CV_8UC3);

    // cv::rectangle(image,cvPoint(9,9),cvPoint(9,9),color1,1,1,0);//两个顶点相同,画一个点
    // cv::rectangle(image,cvPoint(10,10),cvPoint(19,19),color,1,1,0);//矩形的两个顶点,两个顶点都包括在矩形内部


    Rect rec1;
    rec1=Rect(10,10,5,5);
    cv::rectangle(image,rec1,color,1,1,0);//矩形的两个顶点,两个顶点都包括在矩形内部

    cv::namedWindow("image", cv::WINDOW_NORMAL);
    cv::imshow("image",image);
    cv::waitKey(0);

}

参考:

opencv draw OpenCV: Drawing Functions

一个案例  cvRectangle与cv::rectangle的用法 - 灰信网(软件开发博客聚合)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值