一、点
在opencv
中,通常使用Point
类数据结构来表示二维坐标系下的点。下面演示定义一个x
轴坐标为 10,y
轴坐标为 8 的二维点。
Point p; p.x = 10; p.y = 8;
Point p = Point(10,
二、直线
在opencv
中,可以使用line()
函数来绘画直线。
void cv::line( InputOutputArray img, Point pt1, Point pt2, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0)
其中第一个参数表示目标图像,第二个参数表示线段的第一个点,第三个参数表示线段的第二个点,第四个参数表示线段颜色,第五个参数表示线的粗细,第六个参数表示线的类型,第七个参数表示点坐标中的小数位数。
参考代码
#include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<iostream> using namespace std; using namespace cv; int main() { Mat Image = Mat::zeros(500, 500, CV_8UC3); Point p1 = Point(10, 10); Point p2 = Point(490, 490); Scalar color = Scalar(0, 255, 255); line(Image, p1, p2, color, 1, LINE_4); imshow("效果图", Image); waitKey(0); return 0; }
三、椭圆
在opencv
中,可以使用ellipse()
函数来绘画椭圆。
void cv::ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0)
其中第一个参数表示目标图片,第二个参数表示椭圆的中心,第三个参数表示椭圆主轴大小的一半,第四个参数表示以度为单位的椭圆旋转角度,第五个参数表示椭圆弧的起始角度,以度为单位,第六个参数表示椭圆弧的结束角度,以度为单位,第七个参数表示椭圆颜色,第八个参数表示椭圆弧轮廓的厚度,第九个参数表示椭圆边界的类型,第十个参数表示中心坐标和轴值中的小数位数。
参考代码
#include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<iostream> using namespace std; using namespace cv; int main() { Mat Image = Mat::zeros(500, 500, CV_8UC3); RotatedRect rrt; rrt.center = Point(200, 200); rrt.size = Size(100, 200); rrt.angle = 90.0; Scalar color = Scalar(0, 255, 255); ellipse(Image, rrt, color, 2, 8); imshow("效果图", Image); waitKey(0); return 0; }
四、矩形
在opencv
中,可以使用rectangle ()
函数来绘画矩形。
void cv::rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0)
其中第一个参数表示目标图片,第二个参数表示矩形的顶点,第三个参数表示与第二个参数相对的矩形的顶点,第四个参数表示矩形颜色或亮度(灰度图像),第五个参数表示构成矩形的线条的粗细。负值,如FILLED,意味着该函数必须绘制一个填充的矩形,第六个参数表示线的类型,第七个参数表示点坐标中的小数位数。
参考代码
#include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<iostream> using namespace std; using namespace cv; int main() { Mat Image = Mat::zeros(500, 500, CV_8UC3); Scalar color = Scalar(0, 255, 255); Rect rect; rect.x = 100; rect.y = 100; rect.width = 250; rect.height = 300; rectangle(Image, rect, color, -1, 8, 0); imshow("效果图", Image); waitKey(0); return 0; }
五、圆
void cv::circle(InputOutputArray img, Point center, int radius, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0)
其中第一个参数表示目标图片,第二个参数表示圆的中心,第三个参数表示圆的半径,第四个参数表示圆的颜色,第五个参数表示圆形轮廓的粗细(如果为正)。负值,如FILLED,表示要绘制一个实心圆,第六个参数表示圆边界的类型,第七个参数表示中心坐标和半径值中的小数位数。
参考代码
#include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<iostream> using namespace std; using namespace cv; int main() { Mat Image = Mat::zeros(500, 500, CV_8UC3); Scalar color = Scalar(0, 255, 255); circle(Image, Point(250, 250), 105, color, -1, LINE_AA, 0); imshow("效果图", Image); waitKey(0); return 0; }
六、多边形
void cv::fillPoly(InputOutputArray img, InputArrayOfArrays pts, const Scalar & color, int lineType = LINE_8, int shift = 0, Point offset = Point())
其中第一个参数表示目标图片,第二个参数表示多边形数组,其中每个多边形都表示为点数组,第三个参数表示多边形颜色,第四个参数表示多边形边界的类型,第五个参数表示顶点坐标中的小数位数,第六个参数表示轮廓所有点的可选偏移。
参考代码
#include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<iostream> using namespace std; using namespace cv; int main() { Mat Image = Mat::zeros(500, 500, CV_8UC3); Scalar color = Scalar(0, 255, 255); Point p1(100, 100); Point p2(350, 100); Point p3(450, 280); Point p4(320, 450); Point p5(100, 400); std::vector<Point> pts; pts.push_back(p1); pts.push_back(p2); pts.push_back(p3); pts.push_back(p4); pts.push_back(p5); fillPoly(Image, pts, color, 8, 0); imshow("效果图", Image); waitKey(0); return 0; }