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 <iostream>
-
#include <opencv2\highgui\highgui.hpp>
-
-
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<<
“图片加载失败”<<
endl;
-
return
-1;
-
}
-
-
cv::rectangle(matImage,cvPoint(
20,
200),cvPoint(
200,
300),Scalar(
255,
0,
0),
1,
1,
0);
-
//Rect(int a,int b,int c,int d)a,b为矩形的左上角坐标,c,d为矩形的长和宽
-
cv::rectangle(matImage,Rect(
100,
300,
20,
200),Scalar(
0,
0,
255),
1,
1,
0);
-
cvRectangle(iplImage,cvPoint(
20,
200),cvPoint(
200,
300),Scalar(
0,
255,
255),
1,
1,
0);
-
-
imshow(
“matImage”,matImage);
-
cvShowImage(
“IplImage”,iplImage);
-
waitKey();
-
return
0;
-
}
结果:
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顺序,线段颜色就不言而喻了