4

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です。私のフィルター機能は次のとおりです。

cv::bilateralFilter(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
4

1 に答える 1

6

ドキュメントをチェックしてください:

このフィルタはインプレースでは機能しません。

バイラテラル フィルターからの出力として新しいイメージを作成する必要があります。

于 2013-02-03T10:42:43.317 に答える