东西太多太杂,总是学了又忘,所以想在这里记些学习心得和笔记,各位大佬看看就行,不喜勿喷,有啥不对的还请不吝赐教
1.python环境
因为我之前已经学过一些,可以跟着教程配python虚拟环境和opencv环境,网上教程很多的
2.边界填充
就是对图片的边缘进行填充,一共有以下几种方法
3.数值计算
有两个加法:
img1+img2. //超过255的减去256
cv.add(img1,img2) //超过255就取最大的255、
两个图片的像素不一样时,需要将一张图片大小转换为一致的
img_dog=cv.resize(img_dog,(500,400)). :把狗的图片转换为宽500,高400的图片
img = cv.imread('../static/pic1.jpg',1)
# 表示把图片的长和宽放大三倍
res=cv.resize(img,(0,0),fx=3,fy=3)
图像融合:
按权重融合
4.阈值处理
dst=cv.threshold(img,127,255,cv.THRESH_BINARY)
src:输入图像
dat:输出图像
5.图像平滑
img = cv.imread('../static/pic1.jpg',1)
# 调用均值滤波函数
img=cv.blur(img,(3,3))
cv.imshow('win1',img)
cv.waitKey(0)
cv.destroyAllWindows()
归一化:用领域像素的和去除以面积
方框滤波、高斯滤波、中值滤波、
中值滤波对于椒盐噪声和斑点噪声效果比较好
6.形态学腐蚀:
膨胀:
开运算:先腐蚀,再膨胀
闭运算:先膨胀,后腐蚀
礼帽:原始输入-开运算结果
黑帽:比运算-原始输入
7.图像梯度
sobel算子:
减出来如果是一个负数,需要将其转换为正数:convertScaleAbs
拉普拉斯算子:涉及到了二阶导,所以对变化率大的效果好,但是对噪音也比较敏感
8.Canny边缘检测
非极大值抑制:更加准确的找到梯度
双阈值检测:判断题读是否大于最大阈值,判断是否联通,精确的找出边缘
9.图像金字塔
1.高斯金字塔:下采样
1️⃣将Gi与高斯卷积核卷积
2️⃣将所有的偶数行和列去掉
上采样,先扩充两倍,用0填充,然后用卷积和卷积
拉普拉斯金字塔:
10图像轮廓
边缘是零零散散的,轮廓是一个整体
就是找一个图像,把得到的轮廓画上去
11.OCR识别
1.边缘检测
2.获取轮廓
3.坐标变换,变换为方方正正的 (平移+旋转)
4.OCR 识别:pytesseract
12.脚点检测
harris角点检测
做减法操作(相当于来说比较会读变化情况)
根据上面的公式计算出C(灰度变换),泰勒变换,然后转换为矩阵,求其特征值,最终变化以后是一个实对称矩阵,必然线性无关,特征值就是矩阵的解,故求得两个特征值,根据特征值的大小就可以判断出该像素点是不是角点。
根据得到的两个特征值的特点可以用一个角点响应R值来判断是否为角点
13.SIFT算法
就是计算像素点的方向和模值(通过差分尺度变换)
14.特征匹配
Brute-Force蛮力匹配
计算出特征点和特征向量以后比较其欧式距离,从而进行匹配
作用:进行图像拼接
去掉判断错误的点:
其实就是求变换矩阵
迭代的随机取四个点,取重合范围内最多的四个点就可以确定最终的变换矩阵