1 | import cv2 |
文章作者: YuKiFuHaNe
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 YuKiFuHaNeの博客!
相关推荐

2023-07-14
图像平滑处理:均值滤波与方框滤波
1234567891011121314151617181920import cv2img = cv2.imread("lingbosize.png")#均值滤波#简单的平均卷积操作blur = cv2.blur(img,(3,3))#方框滤波#normalize = True和均值一样,选择归一化box = cv2.boxFilter(img,-1,(3,3),normalize=True) #-1表示得到颜色通道数一致#没有选则归一化,容易越界,超过255当作255处理box1 = cv2.boxFilter(img,-1,(3,3),normalize=False)cv2.imshow("blur",blur)cv2.waitKey(1000)cv2.imshow("box",box)cv2.waitKey(1000)cv2.imshow("box1",box1)cv2.waitKey(1000)cv2.waitKey(0) 平均卷积 方框滤波(未归一化) 方框滤波(归一化)

2023-07-14
OpenCV 形态学操作:腐蚀与膨胀
代码12345678910111213141516171819import cv2import numpy as npimg = cv2.imread("a28.png")ret,thresh = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV,0)cv2.imshow("thresh",thresh)cv2.waitKey(500)# cv2.destroyAllWindows()#腐蚀kernel = np.ones((3,3),dtype=np.uint8)erosion = cv2.erode(thresh,kernel,iterations=1) #literations 为迭代次数# res = np.hstack(erosion)cv2.imshow('erosion',erosion)cv2.waitKey(0)# cv2.destroyAllWindows()#膨胀dige_dilate = cv2.dilate(thresh,kernel,...

2023-07-14
OpenCV 拆分与合并 BGR 通道
1234567891011121314151617181920212223import cv2import numpy as npimg = cv2.imread('lingbosize.png')#拆分rgb通道b,g,r = cv2.split(img)gree = np.zeros(img.shape[:2],np.uint8)red = np.zeros(img.shape[:2],np.uint8)#合并bgr通道merged = cv2.merge([b,g,r])cv2.imshow('B',b)cv2.imshow('G',g)cv2.imshow('R',r)cv2.imshow('merge',merged)cv2.waitKey(0)cv2.destroyAllWindows()

2023-07-14
Sobel 算子
Sobel算子:是离散微分算子(discrete differentiation operator),用来计算图像灰度的近似梯度,梯度越大越有可能是边缘。 Soble算子的功能集合了高斯平滑和微分求导,又被称为一阶微分算子,求导算子,在水平和垂直两个方向上求导,得到的是图像在X方法与Y方向梯度图像。 缺点:比较敏感,容易受影响,要通过高斯模糊(平滑)来降噪。 算子是通过权重不同来扩大差异。 梯度计算:(在两个方向求导,假设被作用图像为 I) 水平变化: 将 I 与一个奇数大小的内核 Gx进行卷积。比如,当内核大小为3时, Gx的计算结果为: 垂直变化: 将:math:I 与一个奇数大小的内核 Gy进行卷积。比如,当内核大小为3时, Gy的计算结果为: 在图像的每一点,结合以上两个结果求出近似梯度: 有时也用下面更简单公式代替,计算速度快:(最终图像梯度)。 代码123456789101112131415161718192021222324252627282930313233import cv2import numpy as np#dest = cv2.Sobel(src,...

2023-07-14
OpenCV 阈值处理
cv2.threshold(src,thresh,maxval,type) src = 输入图 dst = 输出图 thresh 阈值 maxval 当前像素超过了阈值(或者小于阈值,根据type决定),所赋予的值type 二值化操作的类型包含以下五种{ · cv2.THRESH_BINARY 超过阈值部分去maxval(最大值,否则取0)· cv2.THRESH_BINARY_INV (上面的反转)· cv2.THRESH_TRUNC 大于阈值部分设为阈值,否则不变· cv2.THRESH_TOZERO 大于阈值部分不变,否则设为0· cv2.THRESH_TOZERO_INV 上面的反转} 1234567891011121314151617181920212223242526272829303132333435import cv2import matplotlib as pltimport numpy as np'''ret,dst = cv2.threshold(s...

2023-07-14
直方图均衡化处理
12345678910111213141516171819202122232425262728#均衡化处理# equalizeHist()import cv2import matplotlib.pyplot as pltimport numpy as npimg = cv2.imread("dm.png",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.imshow('res',res)cv2.waitKey(0)#自适应直方图均衡化(分成好几块做,最后在整合到一块)clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))res_clahe = clahe.apply(img)res2 = np.vstack((img,equ,res_c...

