该函数的成员有:
通过二值化函数处理的图像能够更好的被用于腐蚀膨胀或边缘检测。
该函数的必要成员有:
r, src = cv2.threshold(img, 255, 255, cv2.THRESH_TRIANGLE)
这里的 r 是 retval (返回值) 的缩写。
注意:由于该函数有两个返回值,而只有第二个才是我们想要的图像,所以要在第二个变量之前加一个变量来接住第一个返回值。第一个返回值为得到的阈值,第二个返回值为图像
可以通过以下方法查看 r 的值:
r, src = cv2.threshold(img, 255, 255, cv2.THRESH_TRIANGLE)
print(r)
该函数的成员有:
第一个成员为原图像,第二个成员和第三个成员分别为上下阈值。比如,若想将一幅二值图
像中像素值在 254 到 255 之间的像素赋值为白色,其余像素赋值为黑色的话,可以用以下
写法:
mask = cv2.inRange(gray, 254, 255)
dst = cv2.erode(img, kernel)
其中 kernel 为一个卷积核,这个卷积核一般通过以下函数生成:
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
关于该函数的成员,具体如下:
(卷积核不一定是我们平时见过最多的标准二维数组,也可以是其他的形状)
一般来说,腐蚀操作是针对二值化以后的图像进行处理的一个函数,因为这样的效果是最好
的。(当然,也可以对 BGR 格式的图像进行处理)。
对 BGR 格式图像的处理结果如下:
可以看到黑色的区域有所扩大,但是效果并不明显。
这个函数在二值图上进行操作时,效果会变得相当明显:
操作前:
该函数的成员与 erode 函数基本一样,用法也一样。这个函数也需要在调用前自己生成一个
卷积核。
其必要成员有:
dlt = cv2.dilate(dst, kernel_1)
生成 kernel_1 的方法和上面 erode 中是一样的。
这个函数对二值图进行操作:
该函数的成员有:
L2gradient 是计算图像梯度强度的标识。
该函数的必要参数有:
canny = cv2.Canny(dlt, 3, 9, 3) #dlt是之前膨胀处理后的输出结果
其运行结果为:
OpenCV 提供了一种非常通用的 filter2D()函数,它运用由用户指定的任意核或卷积阵。
卷积矩阵是一个二维数组,有奇数行和奇数列,中心元素对应感兴趣的像素,其他元素
对应邻近元素,每个元素都有一个整数或浮点数值。例如:
(太多了搬不动 直接上截图)
如果想知道这些卷积矩阵到底是怎么得出来的,可以图像处理教科书上去看。
cv2.filter2D()函数包括三个必要参数:
参数 1: 需要处理的图像。
参数 2: 目标图像深度 ,输入值为-1 时,目标图像和原图像深度保持一致。
参数 3: ksize 参数
import numpy as np
import cv2
src = cv2.imread('DSC_0146.jpg')
cv2.imshow("origin image",src)
kernel = np.array([[0.1, 0.1, 0.1],[0.1, 0.1, 0.1],[0.1, 0.1, 0.1]])
dst = cv2.filter2D(src, -1, kernel)
cv2.imshow('low pass filter',dst)
cv2.waitKey(0)
将非边缘区域转为黑色,将边缘区域转为白色或其他饱和颜色。这里我们主要了解
Laplacian()函数。
cv2.Laplacian()包括两个必要参数:
参数 1: 需要处理的图像。
参数 2: 图像的深度,-1 表示采用的是与原图像相同的深度。目标图像的深度必须大
于等于原图像的深度。
举例:
import cv2
src = cv2.imread('DSC_0146.jpg')
cv2.imshow("origin image",src)
lap = cv2.Laplacian(src, -1, 5)
cv2.imshow('Laplacian',lap)
cv2.waitKey(0)