- 🚀 个人简介: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<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;
}
其他:
更多专栏订阅:
- 👍 【开卷数据结构】
- 💛 【备战蓝桥,冲击省一】
- 💕 从零开始的 c++ 之旅
- 💖 【OpenCV • c++】计算机视觉