在OpenCV中凡是与绘图有关的函数几乎都要涉及到这个LineTypes参数的设置。比如说函数line()、函数putText()、函数drawContours()、函数rectangle()等。

在OpenCV4.1.2的官方文档中,LineTypes有以下枚举值:

从中我们可以看出,有四个枚举值,分别为FILLED 、LINE_4 、LINE_8 、LINE_AA 。
其中FILLED并没有说明,说明这个枚举值应该没啥作用。

下面介绍LINE_4 、LINE_8 、LINE_AA的含义。

这几个值是用来确定线条生成算法的。我们知道一个线段实际上是由许多个像素点构成的。以绘制线段为例,当确定了线段的两个端点后,其实就可以确定线段中间那些点的坐标了。那么中间这些点的坐标是怎么计算出来的呢?那就是用相关的算法计算出来的。
在OpenCV中我们就可以用LINE_4 、LINE_8 、LINE_AA来指定具体是用哪些算法来计算出中间这些点的坐标。
LINE_4表示使用的算法计算出的属于线段上的像素点,相邻的两点之间只有四个方向。
LINE_8表示使用的算法计算出的属于线段上的像素点,相邻的两点之间只有八个方向。
LINE_AA表示使用的算法计算出的属于线段上的像素点,相邻的两点之间是大于八个方向的,比如十六个、三十二个之类的。具体是多少个,就得去看研究算法的源代码了,

LINE_AA在上面的解释中为“antialiased line”,意思为抗钜齿线。LINE_4和LINE_8是属于钜齿线的,为什么LINE_4和LINE_8是属于钜齿线呢?因为它们的方向很有限啊,LINE_8有八个方向,LINE_4只有四个方向。方向分辨率有限,那绘制出来的线条形状自然像钜齿了。

注意:要区分四连通域和八连通域与这里的LINE_4和LINE_8和区别。一个像素上下左右的四个像素点称为其四连通域,一个像素上、下、左、右、西北、东北、西南、东南的像素称为其八连通域。显然,如果我们要扩大像素与其相邻点形成的角度个数,那么就得扩大连通域,比如我们可以称下面这个为点P的5×5-1=24连通域,只是P点与其24连通域中的点并一定是相连的。

接下来,看一个示例代码,来体会下这几种LineTypes在效果上的区别。

# 博主微信/QQ 2487872782
# 有问题可以联系博主交流
# 有图像处理开发需求也请联系博主
# 图像处理技术交流QQ群 271891601import cv2
import numpy as npstr1 = 'WR'
thick = 3
Scale = 6img_LINE_4 = np.zeros((300, 300, 3), dtype='uint8')
cv2.putText(img=img_LINE_4,text=str1,org=(20, 150),fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=Scale,color=(0, 255, 0),thickness=thick,lineType=cv2.LINE_4)
cv2.imshow('LINE_4', img_LINE_4)img_LINE_8 = np.zeros((300, 300, 3), dtype='uint8')
cv2.putText(img=img_LINE_8,text=str1,org=(20, 150),fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=Scale,color=(0, 255, 0),thickness=thick,lineType=cv2.LINE_8)
cv2.imshow('LINE_8', img_LINE_8)img_LINE_AA = np.zeros((300, 300, 3), dtype='uint8')
cv2.putText(img=img_LINE_AA,text=str1,org=(20, 150),fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=Scale,color=(0, 255, 0),thickness=thick,lineType=cv2.LINE_AA)
cv2.imshow('LINE_AA', img_LINE_AA)cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果如下:

从运行结果我们可以看出,LINE_4和LINE_8区别不大,但明显能感觉到LINE_AA比LINE_4和LINE_8平滑得多,即抗锯齿性能好。

OpenCV中LineTypes各枚举值(LINE_4 、LINE_8 、LINE_AA )的含义相关推荐

  1. java实体类中有枚举类型_当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出?...

    当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出? 问题: orderStatus 和 payStatus都是枚举类,并且枚举的个数达地10来个,我们不可能在模板页面(jsp/ftl ...

  2. Java枚举的打印_如何在java中打印所有枚举值?

    首先,我会重构您的枚举在构造函数参数中传递字符串表示形式.该代码位于底部. 现在,打印你只是使用的东西像所有枚举值: // Note: enum name changed to comply with ...

  3. C语言中 枚举变量与枚举值,枚举类型变量再赋值问题

    1.枚举定义及其使用 1.1 定义 枚举是一种特殊的整型,关键词为enum,将变量的值一一列举出来,变量的值只限于列举出来的值的范围内 1.2 使用 枚举的定义使用 enum msgtype { eo ...

  4. cv mat 灰度值和_访问OpenCV中灰度图像的像素值

    我只是想让我的概念清楚 - 访问cv :: Mat的所有矩阵元素意味着我实际上访问图像的所有像素值(灰度 - 1通道和颜色 - 3通道)? 就像我的代码打印加载的1通道图像的灰度矩阵的值和类型CV_3 ...

  5. cv mat 灰度值和_c++ 访问OpenCV中灰度图像的像素值

    您正在访问矩阵的元素,您也正在访问图像本身.在您的代码中,执行此操作后: cv::Mat img = cv::imread("lenna.png"); 矩阵img代表图像lenna ...

  6. opencv中求图像像素值中位数

    话不多说,直接上源码: int GetMidValue(Mat& input) {int rows = input.rows;int cols = input.cols;float histo ...

  7. 给枚举值增加扩展数据

    一般的每个枚举值对应着一个值, 而有时一个枚举值又具有其他的对应值或者需要有额外的扩展数据,这时我们怎么办?一种简单的方案是,可以定义一个以枚举值为KEY的字典,然后在Value中填入相应的值.当这个 ...

  8. OpenCV中cv2的用法

    OpenCV中cv2的用法 一.读入图像 使用函数cv2.imread(filepath,flags)读入一副图片 filepath:要读入图片的完整路径 flags:读入图片的标志  cv2.IMR ...

  9. OpenCV中函数imread的参数flags的枚举值(可设置值)及其具体意义

    imread函数的原型如下: C++: Mat cv::imread(const String & filename,int flags = IMREAD_COLOR) Python: ret ...

最新文章

  1. 零起点学算法10——求圆柱体的表面积
  2. 【Qt】Qt再学习(九):并发 QtConcurrent、QFuture、QFutureWatcher
  3. 接口、类、抽象类、对象的另类解释
  4. 趋势科技实习面试后感
  5. python学不会的表情包-小学生绞尽脑汁也学不会的python(反射)
  6. 微信公众平台两种消息处理流程对比
  7. 航天金税 接口_用友凭证接口可以实现数据之间无缝对接和打通
  8. [linux]wait详解
  9. VSCODE修改文字编码格式为GB2312和TAB键为2个空格(MDK5和VSCODE联合开发STM32程序)
  10. python在办公上的应用_python自动化办公:玩转word之样式秘笈
  11. HttpClient3.x之Get请求和Post请求示例
  12. 日期格式化java_JAVA格式化时间日期
  13. notepad html 自动格式化代码,notepad++格式化html代码
  14. PHP云和骑士人才优缺点,PHP云人才系统与骑士cms人才系统对比点评
  15. js轮播图片小圆点变化_原生js实现轮播图的示例代码
  16. IPV4的特殊地址(包括私网地址)
  17. 邮箱邀请涵wm05.html文件怎么阅读,群邮箱里发来的“邀请函”暗藏木马,千万别点后面的链接...
  18. 我爬取了CSDN总榜TOP10博主的2万多篇文章,看看他们为什么这么火
  19. unitoy机器人怎么联网_UniToy智能app
  20. 图形化mysql监控_mysql_monitor

热门文章

  1. 天津中德应用技术大学计算机专业,天津中德应用技术大学高职专业介绍(一)...
  2. 售票java代码_基于jsp的铁路售票-JavaEE实现铁路售票 - java项目源码
  3. Qt用户自定义布局的数据看板实现
  4. 迁移学习人民币面值识别(附源码)-InceptionResNetV2
  5. 网件交换机基本配置命令盘点
  6. AUTOCAD2004字体设置
  7. 页面自动获取焦点影响页面切换效果_HTML5-焦点管理
  8. chatgpt 正向案例 - 书单 表达情感,描写
  9. dede标签:定义文件夹
  10. 如何更有效的使用 Redis 缓存