当前位置:网站首页>c++ opencv Rectangle

c++ opencv Rectangle

2020-12-06 17:44:53 ShellCollector

 

openCV中cvRectangle与cv::rectangle绘制矩形边框

 

 

我的例子:-1代表填充

Rect格式:(x,y,w,h)。

 

cv::rectangle(image_new, Rect(last_x, 16, x_new- last_x, 32), Scalar(0, 0, 0), -1, 1,0);

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

坐标点的小数点位数。

代码:

  1. #include <iostream>

  2. #include <opencv2\highgui\highgui.hpp>

  3.  
  4. using namespace std;

  5. using namespace cv;

  6. int main()

  7. {

  8. char *imageSrc = "I:\\OpenCV Learning\\picture\\sumpalace.jpg";

  9. Mat matImage = imread(imageSrc,-1);

  10. IplImage *iplImage = cvLoadImage(imageSrc,-1);

  11.  
  12. if(matImage.data==0||iplImage->imageData ==0)

  13. {

  14. cout<<"图片加载失败"<<endl;

  15. return -1;

  16. }

  17.  
  18. cv::rectangle(matImage,cvPoint(20,200),cvPoint(200,300),Scalar(255,0,0),1,1,0);

  19. //Rect(int a,int b,int c,int d)a,b为矩形的左上角坐标,c,d为矩形的长和宽

  20. cv::rectangle(matImage,Rect(100,300,20,200),Scalar(0,0,255),1,1,0);

  21. cvRectangle(iplImage,cvPoint(20,200),cvPoint(200,300),Scalar(0,255,255),1,1,0);

  22.  
  23. imshow("matImage",matImage);

  24. cvShowImage("IplImage",iplImage);

  25. waitKey();

  26. return 0;

  27. }

结果:

 

 

cvLine

函数原型:void cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 );

  • img 图像。

  • pt1 线段的第一个端点。

  • pt2 线段的第二个端点。

  • color 线段的颜色。

  • thickness 线段的粗细程度。

  • line_type 线段的类型。

    8 (or 0) - 8-connected line(8邻接)连接 线。

    4 - 4-connected line(4邻接)连接线。

    CV_AA - antialiased 线条。

shift 坐标点的小数点位数。

函数cvLine 在图像中的点1和点2之间画一条线段。线段被图像或感兴趣的矩形(ROI rectangle)所裁剪。对于具有整数坐标的non-antialiasing 线条,使用8-连接或者4-连接Bresenham 算法。画粗线条时结尾是圆形的。画 antialiased 线条使用高斯滤波。要指定线段颜色,用户可以使用使用宏CV_RGB( r, g, b )。

而且指定线条颜色的时候用到的宏CV_RGB(r,g,b)定义为#define CV_RGB( r, g, b ) cvScalar( (b), (g), (r), 0 ),由此可见,实际上起作用的颜色是看cvScalar中的b,g,r顺序,线段颜色就不言而喻了

版权声明
本文为[ShellCollector]所创,转载请带上原文链接,感谢
https://blog.csdn.net/jacke121/article/details/110729263