- 图像显示 imshow
- 图像保存 imwrite
- 视频处理 VideoCapture
- 截取部分图像数据
- 颜色通道提取 split
- 边界填充
- 图像计算
- resize
- 图像融合 addWeighted
- 图像阈值 threshold
- 图像平滑
- 腐蚀操作 erode
- 膨胀操作 dilate
- 开运算 闭运算 morphologyEx
- 梯度计算 morphologyEx
- 图像梯度 Sobel算子
- Canny 边缘检测
- 图像金字塔 pryUp pryDown
- 图像轮廓 findContours
- 模版匹配
- 直方图 calcHist ravel函数
- 直方图均衡化 equalizeHist
- 傅里叶变换 dft idft
- 蛮力匹配(Brute-Force)BFMatcher()
- RANSAC
https://blog.csdn.net/weixin_42533541/article/details/85275035 让pip对应不同的python

图像显示 imshow

图像保存 imwrite

视频处理 VideoCapture

vc.release() #释放硬件资源
截取部分图像数据
img = cv2.imread("图片")xx = img[0:200,0:200]cv_show("xx",xx)
颜色通道提取 split
b,g,r = cv2.split(img) #bgr三通道的矩阵数组中间一系列的对图像操作,在把三通道写回去img = cv2.merge(b,g,r)python CV2中shape和resize返回值和参数的区别1、在一副图像中使用shape得到一个3个类别的列表shape[0] =图像的高shape[1] =图像的宽shape[2] = 图像的图像通道数量2、在对一幅图像进行缩放时resize(img, (w, h))中w表示宽度,h表示高度,正好与shape[0]和shape[1]相反3、如果在resize中要对图像等比例放大或者缩小,注意制定的宽和高需要转换为整数

边界填充


对于subplot函数的理解 看连接 https://www.cnblogs.com/lyxblogs/p/13259753.html
图像计算


resize


图像融合 addWeighted

图像阈值 threshold

图像平滑




腐蚀操作 erode
![]() |
![]() |

膨胀操作 dilate


开运算 闭运算 morphologyEx

梯度计算 morphologyEx


图像梯度 Sobel算子
计算时,小于0 默认都变成0




| 不做绝对值 | 做绝对值 |
|---|---|
![]() |
![]() |
| 分别计算X,Y,求和 | 一起计算X,Y,求和 |
![]() |
![]() |


Canny 边缘检测
1)使用高斯滤波器,以平滑图像,滤除噪声。2)计算图像中每个像素点的梯度强度和方向。3)应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。4)应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。5)通过抑制孤立的弱边缘最终完成边缘检测。






图像金字塔 pryUp pryDown



拉普拉斯金字塔 得出图片类似轮廓


图像轮廓 findContours



轮廓近似 approxPolyDP
模版匹配



·TM_SQDIFF:计算平方不同,计算出来的值越小,越相关.TM_cCORR:计算相关性,计算出来的值越大,越相关·TM_cCOEFF:计算相关系数,计算出来的值越大,越相关.TM_SQDIFF_NORMED:计算归一化平方不同,计算出来的值越接近0,越相关·TM_CCORR_NORMED:计算归—化相关性,计算出来的值越接近1,越相关.TM_CCOEFF_NORMED:计算归一化相关系数,计算出来的值越接近1,越相关
直方图 calcHist ravel函数

img = cv2.imread("xxx.jpg",0)hist = cv2.calcHist([img],[0],None,[256],[0,256])hist.shapeplt.hist(img.ravel(),256)plt.show()
numpy中的ravel()、flatten()、squeeze()都有将多维数组转换为一维数组的功能,区别:
ravel():如果没有必要,不会产生源数据的副本
flatten():返回源数据的副本
squeeze():只能对维数为1的维度降维
另外,reshape(-1)也可以“拉平”多维数组

mask 操作


直方图均衡化 equalizeHist

算法

img = cv2.imread("xxx.jpg",0)plt.hist(img.ravel(),256)plt.show()equ = cv2.equalizeHist(img)plt.hist(equ.ravel(),256)plt.show()res = np.hstack((img,equ))cv2.show("dd",res)
自适应直方图均衡化 createCLAHE
概述:(8,8),就是一张图上面分很多个8x8的小格子,小格子里面进行均衡化
img = cv2.imread("123.jpg",0)equ = cv2.equalizeHist(img)res = np.hstack((img,equ))clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))res_clahe = clahe.apply(img)res = np.hstack((img,equ,res_clahe))cv2.imshow("ww",res)cv2.waitKey(0)
傅里叶变换 dft idft
https://zhuanlan.zhihu.com/p/19763358

代码
低频过滤效果 模糊

高频


蛮力匹配(Brute-Force)BFMatcher()
# 第一步:构造sift,求解出特征点和sift特征向量# detectAndCompute 就是detect和computesift = cv2.SIFT_create()kp1, des1 = sift.detectAndCompute(img1, None)kp2, des2 = sift.detectAndCompute(img2, None)

如果想要更快速的完成操作,用cv2.FlannBasedMarcher
RANSAC













