- 个人简介:CSDN「博客新星」TOP 10 , C/C++ 领域新星创作者
- 作者:锡兰_CC ❣️
- 专栏:【OpenCV • c++】计算机视觉
- 若有帮助,还请关注➕点赞➕收藏,不行的话我再努努力
文章目录
- 一、点
- 二、直线
- 参考代码
- 三、椭圆
- 参考代码
- 四、矩形
- 参考代码
- 五、圆
- 参考代码
- 六、多边形
- 参考代码
一、点
在opencv
中,通常使用Point
类数据结构来表示二维坐标系下的点。下面演示定义一个x
轴坐标为 10,y
轴坐标为 8 的二维点。
Point p;p.x = 10;p.y = 8;
Point p = Point(10,8);
二、直线
在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#include#include#includeusing 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#include#include#includeusing 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#include#include#includeusing 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#include#include#includeusing 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#include#include#includeusing 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;}
其他:
更多专栏订阅:
- 【开卷数据结构】
- 【备战蓝桥,冲击省一】
- 从零开始的 c++ 之旅
- 【OpenCV • c++】计算机视觉