cv::bilateralFilter
Posted
技术标签:
【中文标题】cv::bilateralFilter【英文标题】: 【发布时间】:2013-02-03 10:17:30 【问题描述】:我正在尝试在 Qt 中使用 OpenCV 实现双边过滤器。到目前为止,我已经这样做了:
void MainWindow::on_actionOpen_triggered()
QString fileName =
QFileDialog::getOpenFileName(this, tr("Open Image"), ".",
tr("Image Files (*.png *.jpg *.jpeg *.bmp)"));
image = cv::imread(fileName.toAscii().data());
emit qtimage();
其中image
的类型为cv::Mat
。我的过滤功能是:
(image, image, 0, 21, 3, 0);
QImage img = QImage((const unsigned char*)(image.data),
image.cols,image.rows, QImage::Format_RGB888);
QPalette palette;
palette.setBrush(this->backgroundRole(), QBrush(img));
this->setPalette(palette);
但它给出了运行时错误:
OpenCV Error: Assertion failed ((src.type() == CV_8UC1 || src.type() == CV_8UC3) && src.type() == dst.type() && src.size() == dst.size() && src.data != dst.data)
in bilateralFilter_8u, file C:\Downloads\Software\OpenCV-2.2.0-win\OpenCV-2.2.0\modules\imgproc\src\smooth.cpp, line 1282
terminate called after throwing an instance of 'cv::Exception'
what(): C:\Downloads\Software\OpenCV-2.2.0-win\OpenCV-2.2.0\modules\imgproc\src\smooth.cpp:1282:
error: (-215) (src.type() == CV_8UC1 || src.type() == CV_8UC3) && src.type() == dst.type() && src.size() == dst.size() && src.data != dst.data in function bilateralFilter_8u
【问题讨论】:
你找到解决办法了吗?我也遇到了同样的问题。 【参考方案1】:查看documentation:
此过滤器不能就地工作。
您必须创建新图像作为双边过滤器的输出。
【讨论】:
嘿@Cfr,我注意到在文档中也是如此,但是函数本身在源代码中返回 void。你能详细说明一下吗? 查看错误信息,可能是您的输出图像大小或类型错误。 创建新图像仍然无法正常工作,有什么想法吗?以上是关于cv::bilateralFilter的主要内容,如果未能解决你的问题,请参考以下文章