• 个人简介: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++】计算机视觉