0

QImageをcv::Matに変換すると、マットがぼやけて出てきます。

これはそれを変換するコードです:

QPixmap pixmap(*ui->imgLabel->pixmap());
QImage image = pixmap.toImage();

image.convertToFormat(QImage::Format_RGB888);

Mat matImage = Mat(image.height(), image.width(), CV_8UC3, image.scanLine(0));

これはズームされた元の画像です:

作成された画像は次のとおりです。

助けてくれてありがとう。

4

1 に答える 1

1

QTはわかりませんが、WEBのソリューションを試してみましたか?たとえば、このリンクから、別の変換方法を見つけました。

Mat qimage2mat(const QImage& qimage) {
    cv::Mat mat = cv::Mat(qimage.height(), qimage.width(), CV_8UC4, (uchar*)qimage.bits(), qimage.bytesPerLine());
    cv::Mat mat2 = cv::Mat(mat.rows, mat.cols, CV_8UC3 );
    int from_to[] = { 0,0,  1,1,  2,2 };
    cv::mixChannels( &mat, 1, &mat2, 1, from_to, 3 );
    return mat2;
};
于 2012-08-10T14:37:17.040 に答える