ROI接口便捷修改
ROI 接口便捷修改-CSDN博客
2D/3D几何算法合集
【2D】几何算法合集(自用资源)方便cv_2d线段算法-CSDN博客
【3D】几何算法合集(自用资源)方便cv_动画 几何 算法-CSDN博客
【3D】几何算法合集2(自用资源)方便cv-CSDN博客
工业视觉 一(1-24)
工业视觉需要时可参考的代码---持续更新 一(1-24)
目录
1、批量访问图片,等待键盘
1.2 批量访问图像(不用提前批量重命名)--访问文件夹底下所有同类型图像
1.2.1 单独只有批量访问的
1.3 批量访问图像(也是不用提前批量重命名)--访问文件夹底下所有同类型图像
1.4 批量访问图像(也是不用提前批量重命名)--访问文件夹底下所有同类型图像
1.5 批量访问图像(不用提前批量重命名)--单张和批量前面路径相同(jiefeng)
1.6 批量访问图像(不用提前批量重命名)--单张和批量前面路径相同(bioake暖水管)
1.7 批量访问图(no提前批量重命名)--传入高低曝光两张图, 批量结束结果图集分T和F(shanghai水滴)
1、 的拓展1:遍历时跳过文件夹及非图像文件
1、 的拓展2:字符串相关
2、求均值、方差、标准差
3、将数据写入txt文件并保存到指定路径
3.1 将标签及其对应框选区信息写入txt,使其格式为yolo可用
4、图像预处理相关
4.1 阈值、膨胀、删除最小连通域
4.2 细化
4.3 两图重叠看效果
4.4 锐化
4.5 只删除小轮廓(封装好的小接口)
5、将细化后的黑白图像中,白色点存入ArcLst后按Y排序
6、使点集 中的点重排(按x坐标或y坐标)
7、判图是否为全黑
8、循环测试图像
9、打印区域内的像素灰度值
9.1 传入上下左右,打印对应区域内的像素灰度值
9.2 找出最大及最小灰度值 + 根据max灰度值自适应阈值 + 打印区域内的像素灰度值:
9.3 获取每【行】的像素均值 + 打印区域内的像素灰度值
9.4 获取每【列】的像素均值 + 打印区域内的像素灰度值
9.5 获取每【指定轮廓】内的像素均值 + 打印区域内的像素灰度值
9.5 拓展:获取所锁的上下边缘 紧邻的部分激光区域点集(根据轮廓点集所得)
10、检测最接近给定坐标的光斑直径
11、打印每行白点个数,并返回每行像素和
12、打印耗时
13、造黑图测试
14、提取骨干点集(同一行只保存一个白点,即最高亮处的中心点)
纯代码,提取骨干点集和骨干处像素部分没有封装成函数版本:
14.0 提取骨干点集和骨干处像素部分 已封装成函数版本:
14.0.1 原始版本
骨干提取函数调用:
14.0.2 修改版本(优先选择右叉)
可视化骨干点集:
14.1 获取最右点集(基于已有骨干点集)
14.2 获取最左点集并可视化(基于骨干点集)
14.3 图像上半部分左右翻转后再提取骨干,骨干转换成原来的坐标后再接上后半部分的骨干由此获得完整骨干
14.4 图像上半部分上下翻转后再提取骨干,骨干转换成原来的坐标后再接上后半部分的骨干由此获得完整骨干
14.5 获取最右骨干后整体【向左平移半个激光宽度】得到中心骨干
14.6 直接用灰度图获取激光骨干点集(无效点已删 亮度低的已删)getPntLst_Backbone
15、将直线检测后的所有白点入列(同一行有多个点的话就只保留最右边的点),同时打印x值趋势
15.1 直线检测并打印出正反斜率的直线信息
16、已有两个点坐标,求对应线段
17、已有直线的斜率和截距,寻找离直线最近的点坐标
18、vector中求众数
18.1 (原始版本)
18.2 (兼容vector中存在负数元素的情况 --- 修改优化后版本)
19、传入的图片截取ROI后再进入识别接口
例子2:
例子3:返回四点+双点集
例子 4.1:直接在roi的接口画结果再传出
例子 4.2:直接使用识别算法接口里传出的可视化画布
例子 5.0: 识别接口模板
例子 5.1: 返回单点
例子 5.1.1: 返回单点+上下翻转再进入识别
例子 5.1.2: 返回单点+1个点集+上下翻转再进入识别
例子 5.2: 返回双点
例子 5.2.1: 返回双点+1个点集
例子 5.3: 返回双点集
例子 5.4: 返回三点+双点集+左右翻转再进入识别
例子 5.5:传入两张原图(高/低曝光图),返回单点(高曝光图和激光图结合时使用)
例子 5.6: 返回双点+三点集+左右/上下翻转再进入识别
例子 5.7:更多详情,请跳转
20、vs2015 dll库转成可运行的执行程序(后面可相互随时转换)
20.1 自己调用dll测试
20.2 建dll库文件
21、获取骨干点集X值的变化趋势,及该变化趋势的 变化趋势
21.1 获取 变化趋势
21.1.1 获取骨干点集中心x的变化趋势并可视化
21.1.2 获取激光最右边缘x的变化趋势并可视化
21.2 获取 变化趋势 的变化趋势
22、将图像 tmpMat 沿中心点逆时针旋转90度
23、只画出所有轮廓中最大的那个轮廓
24、提取骨干点集拓展
24.1 获取激光最右点集(骨干点集存入rightmost)
24.2 采用中心点与最右点的中心作为骨干(骨干点集存入rightmost)
工业视觉 二(25-52)
工业视觉需要时可参考的代码---持续更新 二(25-52)
目录
25、 拟合轮廓椭圆,去掉过宽的轮廓并画出剩余轮廓中最大那个
26、删除最小连通域(丽姐发我的)
26.1 第一种
26.2 第二种
27、获取直激光的ROI区域减少运算量
28、 删除 vector 的开头和末尾部分的 cv::Point(0, 0)无效点
29、 计算距离相关
29.1 计算两点间距离 distanced(p1, p2)
29.2.1 计算点到直线的距离(两点式:不垂直于两个坐标轴)
输入一条线和一个点 distance_PntToLine_twoPointForm(cv::Vec4i line, point)
输入线段两端点和一个点 distance_PntToLine_twoPointForm(cv::Point ps, cv::Point pe, point)
输入线段两端点和一个点(改良版) distance_PntToLine_twoPointForm(cv::Point ps, cv::Point pe, point)
29.2.2 计算点到直线的距离(一般式表示直线)PointToLineDistance(Vector2 point, float a, float b, float c)
29.2.3 计算点到直线的距离(KB,点斜式表示直线)pointToLineDistance(pnt, double k, double b)
29.3 获取两线段 间的最小距离(端点)get_minDisBetween2Line
29.4 获取点到两线段的最小距离(到端点)get_minDisPntTo2Line
29.5 点是否超出图像范围 point_isReaonable
29.6 计算点到线段的距离(点到线段两端点的最小距离)distance_PntToLine_twoPoint
30、裁剪图像
30.1 利用ROI(自己封装好的) Croping
30.2 利用 rowRange 和 colRange
31、获取最大内切圆(内切圆)FindInnerCircleInContour
32、获取空间上两点间距离
33、直线检测后更新骨干点集
33.1 根据直线检测的结果画图并更新点集(封装好的接口)
33.2 直线检测更新点集后把空缺手动连上
34、获取骨干的斜率List
35、将斜率List转换成趋势trend,并获取其趋势
36、获取轮廓质心
37、 拟合直线并获取拟合的程度(点集到拟合处的直线距离的均值)
37.1 拓展:分别获取点集前后一段距离内的拟合程度
37.2 直线拟合并获取线拟程度(自己封装好的接口) get_DegreeOfLineFit
37.2.1 线拟后获取与骨干点集对应的直线点集(size与bright_point.size()一致) Get_linePoint
自己封装好的接口:
37.2.2 接上,获取位于直线点集右方的骨干点集
37.3 pair用法及每组坡口组都不同颜色显示(可视化)
37.3.1 pair:存坡口组及其在骨干点集中的对应下标
37.3.2 pair:获取坡口前后的点集的直线拟合程度
37.4 map用法
37.5 list用法
37.6 auto类型用法
38、 快速排序 sort() 用法
39、已知double类型的趋势或斜率list,获取list中的众数
40、关于曝光值的接口
40.1 曝光值调节参考
41、 拟合椭圆 &外接矩形 &填充轮廓 并可视化(只保留一个轮廓)
42、已保留一个轮廓,补充最后保留轮廓上下一定区域内的 疑似缺掉断开的轮廓
43、 已知三点,求三角形面积
43.1 三维空间
43.2 二维
44、手动把骨干空缺处连接上并更新点集
45、获取满足像素骤变要求的高亮段 suspectEdgeList
45.1 一行只保留一个高亮段(与上一行有效高亮段离得最近的那个)
46、根据已有直线算出斜率和倾斜角度并进行旋转,使原图保持垂直状态
根据已有的直线计算倾斜角度:
已知两条线段,求线段夹角:
按角度旋转图像:
整体调用示例:(lines是HoughLines直接出来的直线结果)
获取直线旋转角度的其他方法 :(数学公式直接出来的和上面接口出来的结果经测试是相同的)
47、将图像上下分割成两张独立的小图
47.1 将裁剪后分别处理完的两张图又重新上下拼接起来
48、 两直线求交点
48.1 求两直线交点(注意:不可以与x轴平行)
48.1.1 求两直线交点(注意:允许直线与x轴平行)(已测试)
48.2 判断两条线是否相交,若相交则求出交点和夹角
求两直线夹角的法二(内角或外角的夹角角度):
求两直线夹角的法三(根据向量得到向量间夹角):
48.2.1 画夹角
48.2.2 画虚线
48.2.3 画箭头
49、图像处理+骨干
50、对区域内,找像卷积核的小窗体内均值最高的窗体的中心点
51、展示所得点位的效果图
52、 图像采用(左黑图覆盖-右裁剪)的形式去除干扰项
工业视觉 三(53-80)
工业视觉需要时可参考的代码---持续更新 三(53-80)
目录
53、 VS2015创建dll库 & 测试demo
拓展:拓展其他设置说明
53.1 VS2017 dll库调用其他库的API
53.2 在另一个工程的文件中使用 库a调用的库b 中的接口
53.3 dll库a 调用的库b 中的接口,但库b的头文集不暴露出去造成麻烦(类似53.2)
54、用pair记录初始坡口组在骨干点集中的下标并根据线拟程度筛选出最终坡口
55、图像左右翻转后再进入接口识别
56、角度相关
56.1 获取直线旋转角 ---> 46
56.2 获取两直线夹角 ---> 48.2
56.3 获取直线与【Y】轴的夹角(已知直线上两点)
56.4 获取直线与【X】轴的夹角(已知直线上两点)
57、 获取上下两头用作线拟的点集(按占比取样)
57.1 onlyTwoSides 只保留两边的点,按比例将点集的中间部分剔除,形成新点集
57.2 onlyMiddle 只保留中间部分的点,按比例将点集的头尾部分剔除,形成新点集
58、 线拟后获取直线位置的 linePointList
58.1 (获取直线点集封装成函数)根据线拟后的参数获取直线处的点集(直线点集与对应的骨干点集长度一致)
58.2 删除位于拟合出的直线左侧的点并更新骨干点集和直线所在点集
59、 已有线拟直线位置点集 linePointList, 获取位于其右侧的剩余点集 quantityPoint
59.1 根据 linearPnt得到位于两端的直线部分点集
60、将线拟后剩余的右侧点集quantityPoint分组,以便挑选合适的部分做对应处理
61、选位于中间最弯的圆弧部分的组用于找拐点(在右侧点集分割的组中找,记录组的下标)
62、删除末尾组中结尾y明显离太远的无效点
63、删除圆弧组中两端的无效点(实际在直线区域上,但落进来了,此时就需删掉以免后面影响识别)
64、两直线求交点
64.2 获取内角角点
64.2 获取外角角点
65、反验算top往下bot往上更新至激光边界处
封装好的接口在:86、根据圆弧不断连线获取yMid,即圆弧正上方最高处,得到圆弧最高点midP
65.1 由两端往圆弧顶部x步进,出中心点做验证或优化,验证y1y2正确性,并,得到圆弧最高点midP
65.2 一端直线出现凹陷导致不与y轴平行的情况,将直线凹陷的那个点修正为另一端点对应的位置,验证x1x2正确性
66、将旋转90度后的图传入识别后,结果点转换回原来的
66.1 法一
66.2 法二
67、平均值过滤函数
67.1 原始拿到手时的版本
67.2 自己修改后的适应可用版本
67.2.1 int 版本
67.2.2 double版本
调用示例:
67.2.3 将集群组也作为返回参数&增加集群后再次确认整理&改好算均值的bug
68、根据处理后的轮廓来只保留灰度图中的有效部分(利用蒙版只保留所需部分)
法一:
法二:
69、获取圆弧上的点集(圆弧区域点集)
70、在循环里调用可动态地展示所得点集的过程图
71、VS无法使用断点时
72、try-catch异常处理(避免因函数接口崩溃而崩溃)
73、打印当前源文件的文件名以及源文件的当前行号
74、高曝光图找极细焊缝
74.1 自己写的
74.2 在LJ基础改的
74.2.1 返回单个结果点 版本
74.2.2 返回直线所在的结果点集 版本
75、解析文件名获取 ROI(x,y,w,h) getROIFromString
76、获取骨干区域每行的激光宽度并可视化
76.1 获取骨干区域每行的激光宽度 的趋势 并可视化
76.2 获取激光宽度并得到宽度中的众数
76.3 获取【骨干点集中心x】和【激光最右边缘x】的变化趋势 并可视化
76.4 直激光拼接极细焊缝找断开
阈值后骨干发现断开直接return
平滑激光宽度数据后处于宽度均值以上的,y方向上不相邻(即断开),即认为是坡口
76.5 单独只有获取骨干区域每行的激光宽度
76.6 获取激光宽度,可传入灰度图(长度同骨干点集)getWList_byBackbone
77、数据平滑处理
77.0 对点集做平滑处理
77.1 三点线性平滑(已自行修正可用)
77.2 五点线性平滑:临近五个点取平均(已自行修正可用)
77.3 七点线性平滑
77.4 线性五点拟合去差值:临近五个点去掉最大值和最小值取平均
77.5 利用二次函数拟合平滑
77.5.1 五点二次平滑(利用二次函数拟合平滑)
77.5.2 七点二次平滑(利用二次函数拟合平滑)
77.6 利用三次函数拟合平滑
77.6.1 五点三次平滑(利用三次函数拟合平滑)
77.6.2 七点三次平滑(利用三次函数拟合平滑)(已自行修正可用)
78、将宽度高于均值的部分分组,以便后面选组找尖尖
79、从选中的组里找尖尖组
80、确定最终选中的尖尖组
80.1 拼接直激光:
80.2 圆管弧形激光:
工业视觉 四(81-100)
工业视觉需要时可参考的代码---持续更新 四(81-100)
目录
81、直接返回所在行数和函数等
82、缺陷检测
82.1 缺陷检测算法
82.2 获取多元模板图像(计算均值图像、差异图像、以及亮、暗阈值图像)
82.3 缺陷检测
83、已知结果点处的y,在骨干点集中获取与该y对应的点位
84、容器vector
84.1 容器vector中元素的去重
84.1.1 int
84.1.2 double
84.1.3 QString
84.2 判断vector的某一元素是否存在
84.2.1 int
84.3 两个vector求交集 / 是否有交集
84.3.1 int
84.3.2 double
84.4 两个vector求并集
84.4.1 int
84.5 vector中求众数 ---> 18
84.6 vector中求 [最大值] [最小值] 及其【下标】
85、根据要求在对应位置插入新字符串后得到新文件名InsertChar
86、根据圆弧不断连线获取yMid,即圆弧正上方最高处,得到圆弧最高点midP
86.1 两端直线中间夹圆弧
86.2 纯圆弧
87、111
88、利用 宏 减少get/set函数重复
89、已知点集 groovePnt,将其可视化并获取minX的点
90、已有线段两端点,将其向左侧平移,获取 过直线白点最多的位置
91、自动识别高曝光图是否有效(高曝光图与激光图一样则false)
92、对高曝光图处理并获取范围内的【每列像素list】并可视化
93、根据多列像素list得出一个总结性的像素list并可视化
94、通过矩形移动窗口获取曲线在窗口内的 差值最大的位置并可视化
94.1 通过矩形移动窗口获取曲线在窗口内的 低谷程度(左高到低谷到右高的变化程度)最大的位置
95、删除目录及其所有子文件、子文件夹
96、根据激光图名称自动解析出高曝光图名称
97、根据所存的tb下标对结果组去重/剔除两端偏离中心较远的无效组
97.1 结果组去重
97.2 剔除偏离中心较远的
98、大致得出平均每行激光宽度
99、坐标转换(二维转三维)
100、圆角矩形只保留圆角部分的点集(删除直线部分点集)
工业视觉 五(101-124)
工业视觉需要时可参考的代码---持续更新 五(101-124)-CSDN博客
目录
101、boolalpha 让输出流将bool解析成为true或者 false
102、重新搜寻符合像素值的点位 pastTheFoundPart
103、对完整的骨干点集进行拆分
103.1 已知4点拆分成3个点集
104、获取最靠边的直线下标(上图挑靠上的,下图挑靠下的)
105、分别对激光两头检测直线,由此获取圆弧的起始两端)(分别处理再合并)
106、获取直激光的结束位置(即圆弧的起始位置)(单边处理)
107、已知间隔点位,根据点位【拆分点集】
107.1 已知1点,将完整点集拆分为2个点集
107.2 已知2点,将完整点集拆分为2个点集
107.3 已知2点,将完整点集拆分为3个点集
107.4 已知4点,将完整点集拆分为3个点集
108、通过HoughLinesP后更新点集
109、使两点始终保持为 “tl左上,br右下”
110、对txt文件的读写操作
110.1 写入txt文件
111、获取每【列或行】的像素list并可视化
111.1 获取每【列】Col 的像素list并可视化
例一:【列】Col (上海兰均用的)侧板拼接高曝光图
例二:【列】Col (卓玉用的)孔位有无检测
封装好的接口
111.2 获取每【行】Row 的像素list并可视化
封装好的接口
111.3 若需要对数据做平滑
112、通过像素 list 获取边缘位置信息 getEdge_fromPixLst
113、获取size相同的两图 的差异性(模板匹配无效的情况下)
114、判定当前点位是否位于像素跳变处 isEdge_fromKernel
114.1 (当前圆周点是否真正位于圆轮廓边缘)
114.2 去除边缘不够清晰的点
115、圆集合中挑出唯一圆(选出边缘最明显的圆)
116、获取两点间的点集 getPntLst_between2Pnt
117、判断是否已越过了已找到的部分 pastTheFoundPart
118、只保留 以初始种子为中心的 最内圈轮廓 find_theInnermostRingContours
119、cv::Rect的ROI转成yolo可用的框选区4个信息
120、获取标志量后长度为len的字符串 getStr_befSign
121、检测螺纹有无
122、获取当前行的激光信息(row,colL,colR,width) get_curColData
123、以x落差分割出各部分点集后做处理
例一:获取minX点集的相邻两个点集
例二:获取最弯(直线拟合程度最低)点集的上一个点集
124、三种方法对圆弧上的点做异常检测(点到拟合圆弧的距离、梯度连续性、曲率变化)
工业视觉 六(125-100)
工业视觉需要时可参考的代码---持续更新 六(125-)-CSDN博客
----------------------------------
openCV 圆相关()
openCV3.0 C++ 学习笔记补充(自用 代码+注释)---圆相关-CSDN博客
openCV 直线相关()
openCV3.0 C++ 学习笔记补充(自用 代码+注释)---直线相关-CSDN博客
图像增强方法
【笔记】数字图像处理--图像增强(空间域+频率域)_空间域和频率域-CSDN博客
openCV 一(1-30)
openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 一(1-30)_c++ opencv3.0.0使用例子-CSDN博客
目录
1、快速连通区域分析
2、轮廓包围边框
2.1 矩形包围框
2.1.1 单独只有最小垂直外接矩形框的代码
法二:
2.1.2 利用最小外接矩形进一步删除或涂黑轮廓
2.1.3 单独只有最小垂直外接矩形框
2.1.4 单独只有最小外接矩形框
2.2 最小包围圆(最小外接圆)minEnclosingCircle()
2.3 椭圆边框 fitEllipse()
2.3.1 单独用点集拟合椭圆 fitEllipse()
2.3.2 获取椭圆上的点集 getEllipsePoints()
2.3.3 计算椭圆周长 calculateEllipsePerimeter()
2.4 轮廓质心
2.5 贴边的轮廓
3、鼠标点击事件(打印图像中点击处的像素坐标)
3.1 在识别接口中调用,并显示点击的坐标位置及像素值
4、图像的行列宽高与xy坐标的关系
5、形态学运算morphologyEx()
5.1 开运算(open:先腐蚀后膨胀)
5.2 闭运算(close:先膨胀后腐蚀)
5.3 形态学梯度(gradient:膨胀图与腐蚀图之差)
5.4 顶帽(top hat:原图像和开运算结果做差,亦称礼帽)
5.5 黑帽(black hat:闭运算结果和原图像做差)
5.6 膨胀
5.7 腐蚀
5.8 Canny边缘检测
6、角点检测算法
6.1 Harris 角点检测(基于灰度图的角点提取)
6.2 Shi-Tomasi 角点检测算法
6.3 FAST 角点检测(基于强度值在两个互相垂直的方向上的变化率)
6.4 (角点检测&亚像素)扒拉下来自己修改的小接口
7、直线相关
7.1 霍夫直线检测 HoughLinesP
7.1.1 直线检测并打印出正反斜率的直线信息
7.1.2 霍夫P直线检测后进行直线合并
检测出直线
开始进行直线合并
7.2 霍夫直线检测 HoughLines
为了防止检测不出直线而不断降阈值参数重新检测的循环版本:
使用检测出来的直线 的参数2 直接作为旋转角,经过旋转后实现直线在图像中垂直(即与Y轴相平行)
进行旋转的接口定义:
7.3 直线拟合 cv::fitLine()
7.3.1 上下分别拟合出一条直线
7.3-2 结合最小二乘、RANSAC的直线拟合(得到KB) RansacPolyfitLine
7.3-2.1 画直线(已知直线KB)drawLine_byKB
7.3-3 (增加最大内点数返回)结合最小二乘、RANSAC的直线拟合(得到KB) RansacPolyfitLine
7.4 霍夫P直线检测后进行直线合并
编辑
检测出直线
开始进行直线合并
7.4.1 竖线或斜线情况
封装成函数
7.4.2 横线(即水平线)情况(现包含了>45度的斜线及垂直竖线)
封装成函数
7.4.3 直线合并完后挑出最长直线
7.4.4 竖线 斜线 横线 全部合并
7.4.5 竖线 斜线 横线 一个接口全部合并
7.5 霍夫P直线检测后 过短的直线提前删掉
7.6 直接得到霍夫P+直线合并后的结果线集(封装好的接口)
8、两个点可直接判断是否相等(整形浮点型均可)
9、滤波相关
9.1 平滑处理(双边滤波)
9.2 简单滤波(均值滤波)
9.3 中值滤波
9.4 高斯滤波
9.5 同态滤波
10、inpaint() 图像修复(需事先准备修复模板mask)
11、Gamma 伽马变换(指数变换)(增强对比度)
12、圆相关
12.1 寻找最大内切圆
12.2 最小外接圆
12.3 霍夫圆检测
12.4 检测圆(利用 fitEllipse()最佳拟合椭圆,自写)
12.5 RANSAC算法平面圆拟合(随机选点)
RANSAC的核心步骤:
12.5.1 三点拟合平面圆
12.5.1.1 三点拟合平面圆 (法2)
12.5.2 是否满足一致性条件(是否被判定为内点)
12.5.3 圆 类
12.5 RANSAC算法平面圆拟合(不再随机选点) (能控制耗时) fitCircle_dichotomizing
12.5.1 是否满足一致性条件(是否被判定为内点)
12.6 RANSAC正圆拟合 结合 拟合椭圆(最终使用的)findCircles_RANSAC
12.7 最小二乘法拟合圆
12.8 基于灰度图找内黑外白的圆更新圆心和半径(已有std::vector类型的圆)updateCircleInformation
12.9 可视化cv::RotatedRect类型的圆集合
12.10 获取圆周上点集 getCirclePts
12.11 (圆心或圆周)出框圆检测
12.12 合并 重叠的圆
12.13 多个圆中只保留边缘最明显的那个
13、提取ROI
14、四舍五入
15、二值化阈值相关
15.0 是否为全黑图
15.1 灰度二值化
15.2 普通阈值 threshold()
15.3 图像自适应阈值二值化 adaptiveThreshold()
16、convertTo() 线性变换(对应改变对比度和亮度)或转换类型
使用范例(对应改变对比度和亮度):
使用范例(转换类型):
17、VS2015打印信息出现中文乱码时解决办法
18、直线拟合 fitLine() ---最小二乘法
19、归一化 cv::normalize()
20、基于【拉普拉斯】算子的图像增强 (锐化)
21、 去除二值图边缘突出处
22、 vector累加和&找最大值最小值
23、 传入信息区合法性判断
24、 计算并打印耗时
25、直接获取图像的整体像素均值
25.1 单通道的灰度图
26、 裁剪图像
26.1 利用ROI(自己封装好的)
26.2 利用 rowRange 和 colRange
27、拼接图像
27.1 直接拼接(硬拼)
27.2 自己写的将两张图像拼接在一起的小接口
27.3 图像(横向和纵向)的拼接 (网上扒拉的接口)
28、 获取直线外一点到直线上的垂足(2D)
29、opencv3.0换成4.7
30、对多组坡口组在点位进行绘制,相邻两组不同颜色
openCV 二(31-60)
openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 二(31-60)-CSDN博客
目录
31、 获取vector中的最大最小元素
32、创建黑图可视化点集
33、 cv::destroyAllWindows() 出现imshow图像无法显示解决方案
34、基础常量定义
35、细化
35.1 网上扒拉的
函数声明:
std::vector getPoints
void filterOver
cv::Mat thinImage
调用示例:
35.2 用过的
36、cv::namedWindow 图像尺寸太大了桌面装不下
37、图像清晰度检测(Sobel)
Tenengrad梯度方法
Laplacian梯度方法:
==》double获取单张图片的清晰度值
==》std::vector获取每个圆的清晰度值(批量)
应用:图像上有若干个圆,获取每个圆的清晰度
1)读取图片上的圆。该数组存放了每个圆的坐标,半径
2)把图片上的每个圆单独提取为图片,存在数组里
3)得到每个圆的清晰值
4)把清晰值打图片上
38、使用图像掩码提取区域(利用黑白图后换绿幕
39、自动色阶
40、cv::matchTemplate() 模板匹配
使用示例一(代码段):
使用示例二(自己封装好可调用的接口):
头文件:
识别接口定义:
ROI接口定义:
调用main示例:
使用示例三:不断旋转模板图进行,匹配然后选取匹配度最高那个
41、cv::glob() 遍历文件夹下的所有图片
42、把小图贴到大图的指定位置
43、对比度增强
43.1 多尺度Retinex
43.2 LICE-Retinex(低亮度图像Retinex图像增强)
全局自适应
区域自适应
43.3 自适应对数映射
43.1~43.3 调用
44、cv::log 计算自然对数(图像增强)
45、cv::divide() 除法操作
46、warpAffine() 旋转图像(仿射变换)
46.1 warpAffine() 平移
46.2 warpAffine() 缩放
47、截取图像的圆形区域
48、填充算法(漫水填充)
49、颜色空间
49.1 LAB色彩空间
49.2 RGB 转灰度值
50、合并 重叠的轮廓
50.1 合并 重叠的圆
50.2 合并 重叠的正方形
51、Mean-Shift算法分割图像 cv::pyrMeanShiftFiltering()
52、直方图均衡和规定化(匹配)
单独只有直方图均衡化
单独只有直方图规定化(匹配)
53、calcBackProject 直方图反向投影(占比越多的像素位置越亮)
1.calcBackProject函数
2.mixChannels函数
54、小波变换
55、IT++库
56、cv::KalmanFilter() 卡尔曼滤波
57、傅里叶变换
58、平面图像处理(增强黑边轮廓)
59、区域生长算法
结合广搜和区域生长算法实现更新图像轮廓
60、对比两图相似度
openCV 三(61-)
openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 三(61-)-CSDN博客
目录
61、轮廓集合重排序(按轮廓面积从小到大)
62、只删除过小轮廓及挨边轮廓
63、获取轮廓点集
初始版:
64、获取满足阈值的连通域点集(顺时针搜索存入)
64.1 【深搜版本】获取满足阈值的连通域点集(深搜,顺时针搜索存入)
64.2 【广搜版本】获取满足阈值的连通域点集(广搜,顺时针搜索存入)
65、从轮廓中获取所需点集(轮廓外边缘点集/轮廓完整点集) getPntLst_fromContour
65【拓展】、从已画好的轮廓图中获取轮廓点集(完整点集/外圈边缘点集) getPntLst_fromContourImg
66、删除轮廓(不再会误删被包围在中间的内圈小轮廓)
拓展:改一下画轮廓的方式
67、图像或轮廓的Hu矩
68、cv::grabCut()图像分割
69、cv::compare()图像比较
70、sort 排序相关 拓展
70.1 二维/三维点集重排(按x坐标或y坐标)
70.2 轮廓集合(按轮廓面积从小到大)
70.3 直线集合重排序(按线段长度从长到短)
70.4 按vector中下标为3的元素值从小到大(vector[3]从小到大)
71、图像旋转
72、(图像放缩)将输入图像放大或缩小一定倍数后,恢复原图尺寸resizeImg
73、去掉横向细干扰轮廓,只保留纵向轮廓
74、获取系统时间并转换为字符串形式
【QT】------------------------
QT 笔记 一(1-29)
QT: 学习笔记 一(1-29)_qt gif图片大小缩放-CSDN博客
QT 笔记 二(30-45)
QT: 学习笔记 二(30-)-CSDN博客
【C++】-----------------------
C++ 知识补充
C++ 知识补充_在头文件或cpp文件中是可以通过显式文本描述导入*.lib文件的-CSDN博客
C++笔记,需要时可copy代码
C++笔记,需要时可copy代码-CSDN博客
C++笔记,数学函数
C++笔记,数学函数-CSDN博客
【Python】 -------------------
Python基础笔记补充
Python基础笔记补充-CSDN博客
OpenMV4 + Python 笔记 一
OpenMV4 + Python 笔记 一_openmv找直线-CSDN博客
【机器学习】------------------------
机器学习 理论相关 (自用笔记)-CSDN博客
机器学习 解决相关 (自用笔记)_torch清华镜像下载命令-CSDN博客
PyTorch 学习笔记
PyTorch 学习笔记-CSDN博客
PyTorch - Tensor 学习笔记-CSDN博客
高数/线性代数知识补充---矩阵、行列式、数学符号、内外积_高数 矩阵-CSDN博客
ctrl + win + D : 创建虚拟桌面
ctrl + win + 左右键 :切换虚拟桌面
ctrl + win + f4 : 删除虚拟桌面