cv2.filter2d()opencv中的ddepth参数说明?

cv2.filter2d()opencv中的ddepth参数说明?,opencv,Opencv,我试图平滑图片,但我不理解cv2.filter2d()的第四个参数,其中的值为-1。那么-1是做什么的,ddpeth是什么意思呢 您可以在中看到,ddepth代表“目的地深度”,即结果(目的地)图像的深度 如果使用-1,结果(目标)图像的深度将与输入(源)图像的深度相同。d深度 ddepth表示目标图像的所需深度 它包含有关图像中存储的数据类型的信息,可以是无符号字符(CV_8U)、有符号字符(CV_8S)、无符号短字符(CV_16U)等等 类型 对于类型,该类型的信息由两个值组合而成: 图像深

我试图平滑图片,但我不理解cv2.filter2d()的第四个参数,其中的值为-1。那么-1是做什么的,ddpeth是什么意思呢

您可以在中看到,
ddepth
代表“目的地深度”,即结果(目的地)图像的深度

如果使用
-1
,结果(目标)图像的深度将与输入(源)图像的深度相同。

d深度
ddepth
表示目标图像的所需深度

它包含有关图像中存储的数据类型的信息,可以是无符号字符(
CV_8U
)、有符号字符(
CV_8S
)、无符号短字符(
CV_16U
)等等

类型 对于类型,该类型的信息由两个值组合而成:

图像深度+通道数

它可以是例如
CV_8UC1
(等于
CV_8U
)、
CV_8UC2
CV_8UC3
CV_8SC1
(等于
CV_8S
)等

进一步阅读 有关更多讨论,请参见以下两篇文章


基本上,我知道有五种模糊图像的方法:

1) 使用伽马法

2) 创建您自己的内核(内核:它只是一个由所需形状的内核组成的numpy数组),并将其应用于图像

3) 使用OpenCv的内置函数

blur\u img=cv2.blur(图像大小、内核大小)

4) 高斯模糊

Guassian\u blur\u img=cv2.Guassian blur(img\u src、内核大小、sigma\u值)

5) 中值模糊

中值模糊img=cv2.medianBlu(img\u src,内核大小\u值)

我个人更喜欢使用中值模糊,因为它巧妙地去除了图像中的噪声,这样只有图像背景才会变得模糊,图像中的其他特征也会保持不变,如角点

根据:

当ddepth=-1时,输出图像的深度将与源图像的深度相同

ddepth的有效值受下表限制:

例如:

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('logo.png')

kernel = np.ones((5, 5), np.float32) / 25
dst = cv2.filter2D(img, -1, kernel)
plt.subplot(121), plt.imshow(img), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(dst), plt.title('Averaging')
plt.xticks([]), plt.yticks([])
plt.show()

请阅读我读过的@Miki,我不明白为什么我会发布这个问题?如果你明白了,请解释一下。非常感谢。
cv::Mat src(3, 3, CV_8U3);
cv::Mat dst(3, 3, CV_16S3);
cv::Mat dst2(3, 3, CV_16F3);
cv::Mat kernel(3, 3, CV_8U, cv::Scalar(1));
cv::filter2D(src, dst, CV_16S, kernel); // valid
cv::filter2D(src, dst, CV_16F, kernel); // invalid