OpenCV Python:如何在图像上执行SQRBox滤波操作?
我们可以使用 cv2.sqrBoxFilter() 在图像上执行 SQRBox Filter 操作。它计算重叠滤波器的像素值的归一化平方和。我们可以使用以下语法来调用此方法
cv2.sqrBoxFilter(img, ddepth, ksize, borderType)
其中, img 是输入图像, ddepth 是输出图像的深度, ksize 是运算核的大小,而 borderType 则是用于推断图像外像素的边界模式。
步骤
如下是执行SQRBox滤波操作的步骤:
- 导入所需的库。在以下所有示例中,所需的Python库是 OpenCV 。请确保您已经安装它。
-
使用 cv2.imread() 方法读取输入图像。指定图像类型的完整路径(即png或jpg)
-
对输入图像应用 cv2.sqrBoxFilter() 滤波。我们将 ddepth、ksize、borderType 传递给此函数。我们可以根据需要调整 ksize 以获得更好的结果。
sqrbox = cv2.sqrBoxFilter(img, cv2.CV_32F, ksize=(1,1), borderType = cv2.BORDER_REPLICATE)
- 显示经过 sqrBoxFilter 滤波处理的图像。
我们将使用此图像作为以下示例中的 Input File
示例
在这个Python程序中,我们应用SQRBox滤波器来处理颜色输入图像,核大小为1×1。
#导入所需的库
import cv2
#读取图像
img = cv2.imread('car.jpg')
#对输入图像应用sqrBoxFilter
sqrbox = cv2.sqrBoxFilter(img, cv2.CV_32F, ksize=(1,1),
borderType = cv2.BORDER_REPLICATE)
print("我们应用ksize=(1,1)的sqrBoxFilter")
#保存输出
cv2.imshow('sqrBoxFilter', sqrbox)cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果
执行后,将生成以下输出:
我们应用ksize=(1,1)的sqrBoxFilter
然后您将获得如下所示的窗口,显示输出结果:
示例
在这个Python程序中,我们使用5×5的核大小对二进制图像应用SQRBox滤波器。
# 导入所需库
import cv2
# 读取图像
img = cv2.imread('car.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 150, 255,cv2.THRESH_BINARY)
# 在输入图像上应用sqrBoxFilter
sqrbox = cv2.sqrBoxFilter(thresh, cv2.CV_32F, ksize=(5,5),
borderType = cv2.BORDER_REPLICATE)
print("我们应用了ksize=(5,5)的sqrBoxFilter")
# 显示输出
cv2.imshow('灰度图像', gray)
cv2.waitKey(0)
cv2.imshow('阈值化', thresh)
cv2.waitKey(0)
cv2.imshow('sqrBoxFilter', sqrbox)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出
执行后,将产生以下 输出 ŌłÆ
我们应用了ksize=(5,5)的sqrBoxFilter
然后我们会得到以下三个窗口显示输出 ŌłÆ