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 ) 展开
void cvLine(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 ) 展开
展开全部
首先说明一点:这个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 广告
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询