【OpenCV-Python】:Canny边缘检测的图像化与数值化直观显示

首先给出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

Guess you like

Origin blog.csdn.net/qq_42856191/article/details/118398858