首先给出Canny边缘检测的代码!
import cv2
img = cv2.imread('C:\\Users\\Wxr\\Desktop\\21.jpg', cv2.IMREAD_GRAYSCALE)
c1 = cv2.Canny(img, 32, 128)
r1 = cv2.imshow("result", c1)
cv2.waitKey()
cv2.imwrite('C:\\Users\\Wxr\\Desktop\\r1.jpg', c1)
如果在做图像增强的任务,例如低照度图像增强、水下图像增强等,评价增强图像的质量指标除了PSNR、SSIM、MSE、图像均值、图像标准差之外,我们还可以使用边缘检测的方法,来比较原图和增强图像的边缘检测结果。
PSNR、SSIM、MSE具体实现方式见:
基于Python——图像PSNR、SSIM、MSE计算
对于边缘检测的结果,我们可以通过图像直观感受白色条纹,也可以使用数值化的方式。例如,我们可以计算图像中的白色像素的数量(边缘检测的边缘以白色表示)表征图像纹理细节质量。
下面给出如何计算边缘检测后的图像白色像素值数量的python程序
import cv2
import numpy as np
img = cv2.imread('C:\\Users\\Wxr\\Desktop\\1.jpg', 0) # 读入边缘检测后的图像
print(img.shape)
h, w = img.shape
white = [] # 建立一个列表,用来装入白色像素
for i in range(h): # 遍历图像行列
for j in range(w):
if img[i, j] == 255: # 寻找白色像素值(255)的位置
white.append(img[i, j]) # 位置信息追加进列表
print(len(white)) # 列表长度即为白色像素数量
对于上图中的边缘检测图计算其白色像素值信息情况如下:
img.shape:(128, 128)
len(white):1945