openCV画框图--cv::rectangle

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
  2. #include
  3. using namespace std;
  4. using namespace cv;
  5. int main()
  6. {
  7. char *imageSrc = “I:\\OpenCV Learning\\picture\\sumpalace.jpg”;
  8. Mat matImage = imread(imageSrc, -1);
  9. IplImage *iplImage = cvLoadImage(imageSrc, -1);
  10. if(matImage.data== 0||iplImage->imageData == 0)
  11. {
  12. cout<< “图片加载失败”<< endl;
  13. return -1;
  14. }
  15. cv::rectangle(matImage,cvPoint( 20, 200),cvPoint( 200, 300),Scalar( 255, 0, 0), 1, 1, 0);
  16. //Rect(int a,int b,int c,int d)a,b为矩形的左上角坐标,c,d为矩形的长和宽
  17. cv::rectangle(matImage,Rect( 100, 300, 20, 200),Scalar( 0, 0, 255), 1, 1, 0);
  18. cvRectangle(iplImage,cvPoint( 20, 200),cvPoint( 200, 300),Scalar( 0, 255, 255), 1, 1, 0);
  19. imshow( “matImage”,matImage);
  20. cvShowImage( “IplImage”,iplImage);
  21. waitKey();
  22. return 0;
  23. }
结果:

openCV画框图--cv::rectangle_第1张图片


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顺序,线段颜色就不言而喻了




    你可能感兴趣的:(openCV)