OpenCV
杉木~
这个作者很懒,什么都没留下…
展开
-
OpenCV_高提升滤波
对于某些图像锐化过程中,经典的sobel算子和canny算子等会提取到一些多余的边缘,高提升滤波可以增强图像边缘,通过增大局部灰度差异来增强对比度而,不影响图像整体对比度。步骤如下:1、平滑原图像2、用原图像减去平滑图像,该差值图像作为模板gmask(x,y)=f(x,y) - F(x,y)3、加权缩放后的模板加到原图像上,达到局部对比度增强的效果。g(x,y)= f(x,y) + k* gmask(x,y)通常,我们会在上式中包含一个权重系数k(k>=0)。当k=1时,称为非锐化掩蔽原创 2020-07-10 16:11:36 · 964 阅读 · 0 评论 -
zhang-Suen图像骨架提取(原理和代码)
转自东方fan的博客,感谢!该算法有四个条件,若满足,则该点置为0。或:其中(a)(b)的意思为:中心像素P1周围的目标像素(二值中的1)的个数之和在2和6之间。8邻域像素中,按顺时针方向,相邻两个像素出现0->1的次数。代码:void thinImage(Mat & srcImg) { vector<Point> deleteList; int neighbourhood[9]; int nl = srcImg.rows; int nc = srcI转载 2020-07-08 16:26:11 · 2823 阅读 · 2 评论 -
OpenCV_区域生长算法
算法步骤:创建一个空白的图像(全黑);将种子点存入vector中,vector中存储待生长的种子点;依次弹出种子点并判断种子点如周围8领域的关系(生长规则),相似的点则作为下次生长的种子点;设置结束条件;vector中不存在种子点后就停止生长。用于实现区域内具有相同特征的区域检测。代码:Mat RegionGrow(Mat mat, vector<Point2i> ptt, int th){ Point2i ptGrowing; //待生长点位置 int nG原创 2020-06-04 11:16:45 · 2576 阅读 · 3 评论 -
OpenCV_图像变换
经常要使用到图像的仿射变换和透视变换,今天简单贴一个代码,方便以后复制。仿射变化:1、直接通过中心和旋转角度计算变换矩阵2、通过对应三个点的输入计算变换矩阵透视变换:通过对应四个点的输入计算变换矩阵代码:#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;int main() { Mat src = imread("D:/images/wr原创 2020-05-28 22:05:31 · 255 阅读 · 0 评论 -
OpenCV 直方图反向投影
直方图反投影有两种:1、模板匹配,通过建立模板的直方图和待检测图像直方图,通过检测块的直方图特征对比,实现模板在待检测图像上的匹配,与灰度特征模板匹配所不同的是,直方图反向投影可以“以小检大”,且可以减小尺度变换的影响;2、定位目标位置,在一张复杂的图像中,目标颜色特征占比大,那么其对应的直方图面积大,背景颜色特征占比小,则对应直方图面积小,根据面积概率大小,直方图反向投影过后被赋予新的灰度值,突出目标,便于分割。借鉴博主博客,记录第2种:两个API介绍:mixChannels(//用于将输入数原创 2020-05-26 20:09:24 · 238 阅读 · 0 评论 -
图像显著性检测
今天看论文接触到一个新词—显著性检测,刚开始没想到是一个专业词汇,查了博客发现是一种极好的目标检测算法,可用于目标检测和定位,目标ROI区域粗分割,继而进行目标图像处理。贴出原博客链接:OpenCV-python图像显著性检测算法据说几种算法中FT算法比较好,所以只跑了C++版的代码。**解释:**图像在频率域可以分成低频部分和高频部分。低频部分反映了图像的整体信息,如物体的轮廓,基本的组成区域。高频部分反映了图像的细节信息,如物体的纹理。显著性区域检测用到的更多的是低频部分的信息。在实际进行计算原创 2020-05-25 20:06:08 · 2182 阅读 · 0 评论 -
OpenCV_金字塔模板匹配
模板匹配是最简单易懂的图像匹配方法,可用于目标定位和分割,但由于其属于窗口滑动,基于灰度值统计的匹配,因此比较耗时。高斯金字塔模型可以将高分辨率的图像通过不断下采样,获取低分辨率的图像,构成图像金字塔。通过对低分辨率的图像匹配,可以减少时间,最后对坐标反推可获取原图目标的坐标。奉上网上下载代码代码://-----------------------------------【头文件包含部分】--------------------------------------- // 描述:包含程原创 2020-05-23 16:28:44 · 3233 阅读 · 0 评论 -
OpenCV 二维码定位与识别
因为二维码本身含有信息,因此可以作为产品的信息载体,如:产品特征。在工业领域常用在产品入库、分拣和包装上。但常常会因为二维码图像污点、光照不均匀以及二维码图像倾斜等原因,使得二维码的识别正确率低,针对这些问题,通过学习贾老师OpenCV课程以及其他博主的经验[作者仟人斩],实现了基于OpenCV的二维码定位与识别,但仍有一些问题需要进一步改进,如:背景复杂的情况下,应该采用“1 : 1:3 : 1...原创 2019-12-17 10:48:22 · 4662 阅读 · 0 评论 -
OpenCV小孔圆心定位
前面写的使用改进的最小二乘法拟合缺陷圆效果很好,但在小孔的圆心定位上效果大相径庭,原因可能是小孔边缘点坐标数少,同时小孔变形的影响也很大。在王术彬的论文《基于几何特征的圆心定位方法研究与应用》中学到两种方法。一、直角三角形法通过在圆内找到一个内接直角三角形,利用斜边的中点为圆心,斜边的一半为半径的性质实现小孔定位。步骤:随机找一个点为A,但最好是第 n / 3 个点,避免所选点位于水平...原创 2019-12-09 22:30:58 · 2861 阅读 · 0 评论 -
OpenCV粘连对象计数
随着机器视觉和图像处理技术的发展,在工业和生活中都应用广泛。传统的计数方法常依赖于人眼目视计数,不仅计数效率低,且容易计数错误。通常现实中的对象不会完美地分开,需要通过进一步的图像处理将对象分开,学习了***贾志刚老师***的OpenCV对象提取与计数课程,现复盘整理如下。1、方案思路图像预处理,二值化分割;使用形态学操作,初步将粘连对象分开;距离变换,分离粘连对象;连通区域计数。...原创 2019-12-06 21:27:27 · 3125 阅读 · 10 评论 -
身份证号码识别
初次接触OCR技术,OCR技术在工业检测上有极大的用处,如工件上面得数字标号识别、印刷纸票识别、车牌识别、身份证号码识别等。但中文字体识别较难,如今百度OCR、谷歌tesseract等提供识别接口,可以取得较好的识别效果。通过贾志刚老师的印刷字体识别课程和一些OpenCV函数的学习,用身份证号码识别检测一下所学知识。主要步骤使用OpenCV进行图像仿射变换或者透视变换,将图像摆正;通过二...原创 2019-12-04 21:14:33 · 3049 阅读 · 0 评论 -
改进最小二乘法缺陷圆轮廓拟合
机器视觉图像处理中常用到圆形检测,准确地拟合圆轮廓是测量圆直径尺寸的前提和保证。霍夫圆检测容易受到变形圆或缺损圆的影响,改进的最小二乘法可以提高拟合和尺寸测量精度。1、公式推导最小二乘法通过最小化误差的平方和找到一组数据的最佳函数匹配。 最小二乘法是用最简的方法求得一些绝对不可知的真值,而令误差平方之和为最小。2、代码double sumX = 0.0;double sumY = 0...原创 2019-12-04 19:18:17 · 2025 阅读 · 10 评论 -
OpenCV 亚像素级角点检测
角点检测可能应用于工业检测中,可以作为特征点作为后续处理的条件,也可以做图像分割,比如工件外轮廓由直线、圆弧等连接而成,可以通过角点检测把直线和圆弧分割开等。OpenCV中通过两个函数实现图像的亚像素级角点检测。1、goodFeaturesToTrack()void goodFeaturesToTrack(InputArray image, OutputArray corners, int m...原创 2019-12-03 17:25:08 · 337 阅读 · 0 评论 -
OpenCV 角度计算
把以前学习的知识重新整理一下,首先通过OpenCV霍夫线变换提取图像直线,分别取线上两点,通过计算线的斜率,从而计算角度。1、霍夫线变换opencv支持两种不同的霍夫变换:标准霍夫变换(SHT)和累积概率霍夫变换(PPHT)。在opencv中可以使用同一个函数来使用两种算法。相关函数如下:void HoughLinesP(InputArray image,OutputArray lines...原创 2019-12-03 16:42:55 · 8130 阅读 · 0 评论