【问题标题】:OpenCV 3 bilateral filter function errorOpenCV 3双边过滤功能错误
【发布时间】:2026-01-26 05:40:01
【问题描述】:

当我尝试使用 OpenCV 3 双边过滤功能时

bilateralFilter ( src, dst, 3, 3, 3 );

我收到此错误:

OpenCV 错误:断言失败 ((src.type() == CV_8UC1 || src.type() == CV_8UC3) && src.data != dst.data) 在bilateralFilter_8u,文件/home/jean/opencv-3.0.0/modules/imgproc/src/smooth.cpp,第3066行 在抛出 'cv::Exception' 的实例后调用终止

我已经尝试使用cvtColor(src, src, CV_8UC3);cvtColor(src, src, CV_8UC1); 修复错误,但错误仍然存​​在。

有解决这个问题的技巧吗?

【问题讨论】:

  • 查看这一行:src.data != dst.data。试着让你的目的地垫成为一个新的。
  • 看起来问题确实出在 dst 上。我已经改了,现在问题解决了,谢谢。

标签: c++ opencv image-processing


【解决方案1】:

正如 Derman 所说,您的源和目标 mat 可能指向相同的数据。您可以在以下链接中找到示例:

http://opencvexamples.blogspot.com/2013/10/applying-bilateral-filter.html

OpenCV 提供的另一个例子可以在这里找到:

http://docs.opencv.org/3.0-beta/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html

【讨论】: