OpenCV C++ 2D绘图Rook 这个程序简单封装了opencv绘制填充多边形和直线的函数绘制了一个名为Rook的图形。代码#include opencv2/core.hpp #include opencv2/imgproc.hpp #include opencv2/highgui.hpp #define w 400 using namespace cv; 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 MyLine(Mat img, Point start, Point end) { int thickness 2; int lineType LINE_8; line(img, start, end, Scalar(0, 0, 0), thickness, lineType); } int main( void ){ char rook_window[] Rook; Mat rook_image Mat::zeros( w, w, CV_8UC3 ); MyPolygon( rook_image ); rectangle( rook_image, Point( 0, 7*w/8 ), Point( w, w), Scalar( 0, 255, 255 ), FILLED, LINE_8 ); 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 ) ); imshow( rook_window, rook_image ); waitKey( 0 ); return(0); }

本月热点