我在C ++项目中使用OpenCV。我从立体视觉相机获得了深度图,并想用中值滤波器对其进行滤波。我的深度图是cv::Mat_< double>
。 (我无法更改格式,只能将其转换)。
是否有可能实现cv::Mat_< double>
输入的中值滤波器的功能?
medianBlur(cv::Mat_<double> src, cv::Mat_<double> dst, int ksize)
在文档中,我只找到了对CV_8U
,CV_16U
或CV_32F
图片的支持。
http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=medianblur#medianblur
OpenCV库中是否有我的问题的解决方案。 我应该制作自己的中值滤波器吗?如果必须,你有什么好的参考吗?
答案 0 :(得分:1)
你可以这样做:
cv::Mat_<double> input;
cv::Mat_<double> output; // or cv::Mat output;
cv::medianBlur(input, output, 3);
PS:你必须确保int ksize
只能输入3或5(双垫)。如documentation中所述:
参数:
src
- 输入1通道,3通道或4通道图像; 当ksize
为3或5时,图片深度应为CV_8U, CV_16U
或CV_32F
,对于较大的光圈尺寸,它只能是CV_8U
。...
ksize
- 光圈线性大小; 必须是奇数且大于1,例如:3,5,7 ......