计算机视觉
读取图像部分
image[0:200,0:200]
颜色通道提取
b,g,r=cv2.split(image)
图像梯度
laplacian,sobel,scharr算子
通过像素x,y坐标左右的值进行计算
#sobel算子
cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
#scharr算子
cv2.Scharr(img,cv2.CV_64F,1,0)
cv2.Laplacian(img,cv2.CV_64F)
#取绝对值
image=cv2.convertScaleAbs(img)
图像滤波
均值滤波
#简单的平均卷积操作
blur=cv2.blur(img,(3,3))
方框滤波
box=cv2.boxFilter(img,-1,(3,3),normalize=True)
高斯滤波
aussian=cv2.GaussianBlur(img,(5,5),1)
中值滤波
median=cv2.medianBlur(img,5)
#把三张图连在一起
#横着拼接
res=np.hstack((blur,aussian,median))
#竖着拼接
res=np.vstack((blur,aussian,median))
cv2.imshow("median vs avrage",res)
图像阈值
阈值又叫临界值,是指一个效应能够产生的最低值或最高值。
ret,dst=cv2.threshold(src,thresh,maxval,type)
- src输入图,dst输出值,thresh阈值,超过阈值被赋予的值,type二值化操作;
- THRESH_BINARY(超过阈值的取最大值maxval,否则取0);
- THRESH_BINARY_INV反转操作;
- THRESH_TRUNC(大于阈值取阈值,否则不变);
- THRESH_TOZERO(大于阈值不变,否则为0);
- THRESH_TOZERO_INV;
Canny边缘检测算法
- 使用高斯滤波器。以平滑图像,滤除噪声;
- 计算图像中每个像素点的强度和方向;
- 应用非极大值抑制,以消除边缘检测带来的散杂相应;
- 应用双阈值检测来确定真实的和潜在的边缘;
- 通过抑制鼓励的弱边缘检测
img=cv2.imread("lena.jpg",cv2.IMREAD_GRAYSCALE)#读取为灰度图像
v1=cv2.Canny(img,80,150)
v2.cv2.Canny(img,50,100)
res=np.hstack(v1,v2)
cv_show(res,"res")