opencv line 绘制直线

本文介绍了如何使用OpenCV中的line()函数绘制直线,并提供了一个示例代码,展示了如何设置线段的起点、终点、颜色、宽度及类型等参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

opencv提供了line()函数来对直线的绘制。其原型如下:

void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)

参数:

img: 要绘制线段的图像。
pt1: 线段的起点。
pt2: 线段的终点。
color: 线段的颜色,通过一个Scalar对象定义。
thickness: 线条的宽度。
lineType: 线段的类型。可以取值8, 4, 和CV_AA, 分别代表8邻接连接线,4邻接连接线和反锯齿连接线。默认值为8邻接。为了获得更好地效果可以选用CV_AA(采用了高斯滤波)。
shift: 坐标点小数点位数。



示例代码:

#include <iostream>
#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
	Mat src=imread("A.jpg");
	line(src,Point(1,1),Point(250,250),Scalar(0,0,255),5,CV_AA);
	imwrite("src.jpg",src);
	imshow("A",src);
	printf("channel: %d",src.channels());
#if 0
	Mat dst;
	Canny(src,dst,50,200);
	imwrite("dst.jpg",dst);
	imshow("dst",dst);
#endif
	waitKey(0);
}


效果图:


### OpenCvSharp 绘制直线 示例代码及教程 在 C# 项目中使用 OpenCvSharp 绘制直线,需要先安装 `OpenCvSharp4` 和 `OpenCvSharp4.runtime.win` NuGet 包[^2]。然后通过 `Cv2.Line` 方法实现直线绘制功能。 以下是一个完整的示例代码,展示如何使用 OpenCvSharp 在图像上绘制一条红色直线: ```csharp using OpenCvSharp; class Program { static void Main(string[] args) { // 创建一个 500x500 的空白图像,背景为白色 Mat image = new Mat(new Size(500, 500), MatType.CV_8UC3, Scalar.All(255)); // 定义直线的起点和终点 Point startPoint = new Point(50, 50); Point endPoint = new Point(400, 400); // 使用 Cv2.Line 方法绘制直线 Cv2.Line(image, startPoint, endPoint, new Scalar(0, 0, 255), 2); // 红色直线,线宽为2 // 显示绘制结果 Cv2.ImShow("Line Drawing", image); Cv2.WaitKey(0); // 按任意键关闭窗口 } } ``` #### 参数说明 - `image`: 表示要绘制直线的目标图像。 - `startPoint`: 直线的起点坐标,类型为 `Point`。 - `endPoint`: 直线的终点坐标,类型为 `Point`。 - `new Scalar(0, 0, 255)`: 表示直线的颜色,这里设置为红色 (BGR 格式)。 - `2`: 表示直线的粗细,单位为像素。 通过上述代码可以成功绘制一条从 `(50, 50)` 到 `(400, 400)` 的红色直线[^2]。 --- #### 注意事项 1. 如果未安装 `OpenCvSharp4` 和 `OpenCvSharp4.runtime.win`,可能会导致运行时错误。确保正确配置 NuGet 包。 2. `Scalar` 的颜色值以 BGR 格式定义,而不是 RGB 格式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值