OpenCV里的画图功能(drawing Function)里面有linetype这个参数,有什么用,为什么都是8?

例如这个:voidcvLine(CvArr*img,CvPointpt1,CvPointpt2,CvScalarcolor,intthickness=1,intline_... 例如这个:
void cvLine(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 )
展开
 我来答
15117250020
推荐于2017-12-16 · TA获得超过233个赞
知道答主
回答量:3
采纳率:0%
帮助的人:2.5万
展开全部

首先说明一点:这个linetype参数并不是指线型是实线、虚线还是点画线,这个参数实际用途是改变线的产生算法。什么意思?以函数line()为例,官方的说明文档里lineType参数说明如下:

Line(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 )
lineType –
  Type of the line:
   8 (or omitted) - 8-connected line.
   4 - 4-connected line.
   CV_AA - antialiased line.

lineType=8指的是8联通线型,这里涉及到线的产生算法,因为分辨率的关系,直线使用光栅的形式表示的,如图:

这其实就是就是8联通线(8-connected),即下一个点连接上一个点的边或角,对比一下4-connected算法(也叫Bresenham直线算法)会更好理解,如图:

4联通的简单叙述就是:下一个点和上一个点边相连(没有角了),这样就消除了8联通法线断裂的瑕疵,可以说是一种更好的方式。至于为什么选择8,可能是因为算法上更简单。有兴趣可以参考这个:

http://stackoverflow.com/questions/13542925/line-rasterization-4-connected-bresenham

和这个:

https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm#Simplification

P.S:在百度知道像我这个认真答题的真的不多了,忘采纳!

东莞大凡
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进... 点击进入详情页
本回答由东莞大凡提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式