1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【OpenCV】绘制简单图形

【OpenCV】绘制简单图形

时间:2021-06-23 01:31:36

相关推荐

【OpenCV】绘制简单图形

线条、椭圆、矩形、圆、多边形

线条line()void cv::line ( InputOutputArray img,Point pt1,Point pt2,const Scalar & color,intthickness = 1,intlineType = LINE_8,intshift = 0 ) 椭圆ellipse() void cv::ellipse ( InputOutputArray img,Point center,Size axes,double angle,double startAngle,double endAngle,const Scalar & color,intthickness = 1,intlineType = LINE_8,intshift = 0 ) 矩形rectangle() void cv::rectangle ( InputOutputArray img,Point pt1,Point pt2,const Scalar & color,intthickness = 1,intlineType = LINE_8,intshift = 0 ) 圆circle()void cv::circle ( InputOutputArray img,Point center,intradius,const Scalar & color,intthickness = 1,intlineType = LINE_8,intshift = 0 ) 多边形fillPoly()void cv::fillPoly ( Mat & img,const Point ** pts,const int *npts,intncontours,const Scalar & color,intlineType = LINE_8,intshift = 0,Point offset = Point() )

代码示例

#include <opencv2/core.hpp>#include <opencv2/imgproc.hpp>#include <opencv2/highgui.hpp>#define w 400using namespace cv;void MyEllipse(Mat img, double angle);void MyFilledCircle(Mat img, Point center);void MyPolygon(Mat img);void MyRect(Mat img);void MyLine(Mat img, Point start, Point end);int main(void){Mat atom_image = Mat::zeros(w, w, CV_8UC3);Mat rook_image = Mat::zeros(w, w, CV_8UC3);MyEllipse(atom_image, 90); // 椭圆MyEllipse(atom_image, 0);MyEllipse(atom_image, 45);MyEllipse(atom_image, -45);MyFilledCircle(atom_image, Point(w / 2, w / 2));// 圆MyPolygon(rook_image);// 多边形MyRect(rook_image); // 矩形MyLine(rook_image, Point(0, 15 * w / 16), Point(w, 15 * w / 16)); // 线条MyLine(rook_image, Point(w / 4, 7 * w / 8), Point(w / 4, w));MyLine(rook_image, Point(w / 2, 7 * w / 8), Point(w / 2, w));MyLine(rook_image, Point(3 * w / 4, 7 * w / 8), Point(3 * w / 4, w));char atom_window[] = "Drawing 1:Atom";char rook_window[] = "Drawing 2:Rook";imshow(atom_window, atom_image);moveWindow(atom_window, 0, 200);imshow(rook_window, rook_image);moveWindow(rook_window, w, 200);waitKey(0);return(0);}void MyEllipse(Mat img, double angle){int thickness = 2;int lineType = 8;ellipse(img,Point(w / 2, w / 2),Size(w / 4, w / 16),angle,0,360,Scalar(255, 0, 0),thickness,lineType);}void MyFilledCircle(Mat img, Point center){circle(img,center,w / 32,Scalar(0, 0, 255),FILLED,LINE_8);}void MyPolygon(Mat img){int lineType = LINE_8;Point rook_points[1][20];rook_points[0][0] = Point(w / 4, 7 * w / 8);rook_points[0][1] = Point(3 * w / 4, 7 * w / 8);rook_points[0][2] = Point(3 * w / 4, 13 * w / 16);rook_points[0][3] = Point(11 * w / 16, 13 * w / 16);rook_points[0][4] = Point(19 * w / 32, 3 * w / 8);rook_points[0][5] = Point(3 * w / 4, 3 * w / 8);rook_points[0][6] = Point(3 * w / 4, w / 8);rook_points[0][7] = Point(26 * w / 40, w / 8);rook_points[0][8] = Point(26 * w / 40, w / 4);rook_points[0][9] = Point(22 * w / 40, w / 4);rook_points[0][10] = Point(22 * w / 40, w / 8);rook_points[0][11] = Point(18 * w / 40, w / 8);rook_points[0][12] = Point(18 * w / 40, w / 4);rook_points[0][13] = Point(14 * w / 40, w / 4);rook_points[0][14] = Point(14 * w / 40, w / 8);rook_points[0][15] = Point(w / 4, w / 8);rook_points[0][16] = Point(w / 4, 3 * w / 8);rook_points[0][17] = Point(13 * w / 32, 3 * w / 8);rook_points[0][18] = Point(5 * w / 16, 13 * w / 16);rook_points[0][19] = Point(w / 4, 13 * w / 16);const Point* ppt[1] = { rook_points[0] };int npt[] = { 20 };fillPoly(img,ppt,npt,1,Scalar(255, 255, 255),lineType);}void MyRect(Mat img){rectangle(img,Point(0, 7 * w / 8),Point(w, w),Scalar(0, 255, 255),FILLED,LINE_8);}void MyLine(Mat img, Point start, Point end){int thickness = 2;int lineType = LINE_8;line(img,start,end,Scalar(0, 0, 0),thickness,lineType);}

运行结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。