Здесь мы покажем, как комментировать изображения с помощью геометрических фигур и текста.
- Cv2.Line() рисует прямую линию
- Cv2.Ellipse() рисует эллипс
- Cv2.Rectangle() рисует прямоугольник.
- Cv2.Circle() рисует круг
- Cv2.FillPoly() рисует многоугольники.
- Cv2.PutText() рисует текст
1. Нарисуйте прямую линию
Cv2.Line(изображение, начальная_точка, конечная_точка, цвет, толщина)
параметр | иллюстрировать |
изображение | Изображение, которое нужно нарисовать |
Начальная точка | Координаты начальной точки |
конечная_точка | Координаты конечной точки |
цвет | цвет прямой линии |
толщина | Ширина прямой линии (>0 && <=32767) не может быть -1. |
Mat img = new Mat(500, 500, MatType.CV_8UC3, Scalar.White); // 创建一个500x500的白色图像
Point pt1 = new Point(100, 100);
Point pt2 = new Point(400, 100);
Scalar color = new Scalar(0, 0, 255); // 红色线条
Cv2.Line(img, pt1, pt2, color, 2); // 在图像上绘制直线
Cv2.ImShow("Line", img); // 显示图像
2. Нарисуйте эллипс
Cv2.Ellipse(изображение, centerCoordinates, axesLength, угол, startAngle, endAngle, цвет, толщина)
параметр | иллюстрировать |
изображение | Изображение, которое нужно нарисовать |
центрКоординаты | Координаты центра |
осиДлина | Длина вала |
угол | Угол отклонения эллипса, >0 по часовой стрелке, <0 против часовой стрелки |
началоУгол | Начальный угол эллиптического профиля (рассчитывается по углу отклонения) |
конечный угол | Конечный угол эллиптического контура (рассчитывается по углу отклонения) (если вы рисуете эллипс, startAngle=0, endAngle=360) |
цвет | Цвет линии эллипса |
толщина | Ширина линии эллипса. Отрицательные числа указывают на заполнение. |
// 创建一个空白图像
Mat img = new Mat(500, 500, MatType.CV_8UC3, Scalar.White);
// 定义椭圆参数
Point center = new Point(250, 250);
Size axes = new Size(100, 200);
double angle = 30;
double startAngle = 0;
double endAngle = 360;
Scalar color = Scalar.Red;
int thickness = 2;
LineTypes lineType = LineTypes.Link8;
int shift = 0;
// 绘制椭圆
Cv2.Ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness, lineType, shift);
// 显示图像
Cv2.ImShow("Ellipse", img);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
3. Нарисуйте прямоугольник
Cv2.Rectangle(изображение, pt1, pt2, прямоугольник, цвет, толщина, тип линии)
параметр | иллюстрировать |
изображение | Изображение, которое нужно нарисовать |
часть 1 | вершина прямоугольника |
часть 2 | Диагональная точка точки 1 |
прямой | прямоугольник |
цвет | Цвет прямоугольника |
толщина | Толщина линии прямоугольника. Если оно меньше 0, это означает заполнение. |
тип линии | линейный |
// 创建一个空白图像
Mat img = new Mat(500, 500, MatType.CV_8UC3, Scalar.White);
Point start_point = new Point(300, 115);
Point end_point = new Point(475, 225);
Scalar color = new Scalar(0, 0, 255); // 红色线条
// 绘制矩形
Cv2.Rectangle(img, start_point, end_point, color, 3, (LineTypes)8, 0);
// 显示图像
Cv2.ImShow("Ellipse", img);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
4. Нарисуйте круг
Cv2.Circle(изображение, координаты центра, радиус, цвет, толщина)
параметр | иллюстрировать |
изображение | Изображение, которое нужно нарисовать |
center_coordinates | Координаты центра круга |
радиус | радиус |
цвет | цвет |
толщина | Толщина |
// 创建一个空白图像
Mat image = new Mat(500, 500, MatType.CV_8UC3, Scalar.White);
// 定义圆心坐标和半径
Point center = new Point(250, 250);
int radius = 100;
// 在图像上绘制圆
Cv2.Circle(image, center, radius, Scalar.Red, 2);
// 显示图像
Cv2.ImShow("Circle", image);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
5. Рисуем многоугольники
Cv2.FillPoly(изображение, точки, цвет, тип линии)
параметр | иллюстрировать |
изображение | Изображение, которое нужно нарисовать |
точки | набор координат |
цвет | цвет |
тип линии | Тип линии |
using Point = OpenCvSharp.Point;
// 创建一个空白图像
Mat image = new Mat(500, 500, MatType.CV_8UC3, Scalar.White);
// 定义多边形的顶点坐标
Point[] points = new Point[]
{
new Point(100, 100),
new Point(200, 100),
new Point(200, 200),
new Point(100, 200)
};
// 将多边形绘制并填充到图像上
Cv2.FillPoly(image, new List<Point[]> { points }, Scalar.Red);
// 显示图像
Cv2.ImShow("Filled Polygon", image);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
6. Нарисуйте текст
Cv2.PutText(изображение, текст, организация, шрифт, FontScale, цвет)
параметр | иллюстрировать |
изображение | Изображение, которое нужно нарисовать |
текст | текстовая строка |
организация | Начальная позиция верхнего левого угла текстовой строки. |
шрифт | размер шрифта |
шрифтМасштаб | Масштабирование шрифта |
цвет | цвет |
// 创建一个空白图像
Mat image = new Mat(500, 500, MatType.CV_8UC3, Scalar.White);
// 定义多边形的顶点坐标
Cv2.PutText(image, "Hello,OpenCvSharp!", new Point(20, 200), HersheyFonts.HersheySimplex, 1, new Scalar(0, 0, 255), 2, LineTypes.Link4);
// 显示图像
Cv2.ImShow("Hello,OpenCvSharp", image);
Каталог статей C# OpenCV
c# Обнаружение OpenCV (обнаружение пятен, обнаружение краев, обнаружение контуров) (5)
Базовое рисование C# OpenCV (линия, эллипс, прямоугольник, круг, многоугольник, текст) (4)
Обрезка изображения C# OpenCV, изменение размера, поворот, перспектива (3)