目录
一、自适应阈值
引入前提:在前面的部分我们使用是全局闻值,整幅图像采用同一个数作为闻值。当时这种方法并不适应与所有情况,尤其是当同一幅图像上的不同部分的具有不同亮度时。这种情况下我们需要采用自适应闻值。此时的闻值是根据图像上的每一个小区域计算与其对应的闻值。因此在同一幅图像上的不同区域采用的是不同的闻值,从而使我们能在亮度不同的情况下得到更好的结果
案例代码如下:
import cv2
import numpy as np
img = cv2.imread('6.jpg')
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.resizeWindow('img',1920,1080)
# 二值化操作是对灰度图像操作,把图像转为灰度图像
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 自适应阈值二值化只返回一个值,即二值化后的结果
dst = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,6,0)
# 展示
cv2.imshow('img',np.hstack((gray,dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()
二、边缘检测Canny
Canny三个主要特征:
- 低错误率
- 高定位性
- 最下响应
案例代码如下:
import cv2
import numpy as np
# 导入图片
img = cv2.imread('6.jpg')
# 阈值越小,细节越丰富(阈值需自己调节)
lena1 = cv2.Canny(img,100,200)
lena2 = cv2.Canny(img,64,128)
# 展示图片
cv2.imshow('lena',np.hstack((lena1,lena2)))
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果如下: