LINUX.ORG.RU

qt opencv cvCvtColor проблема


0

1
void MainWindow::openImage()
{
    //declare FileOpName as the choosen opened file name
    FileOpName = QFileDialog::getOpenFileName(this,
                                    tr("Open File"), QDir::currentPath(),tr("Image Files (*.png *.jpg *.jpeg *.bmp)"));

    //Check if FileOpName exist or not
    if (!FileOpName.isEmpty()) {
        QImage image(FileOpName);
        if (image.isNull()) {
            QMessageBox::information(this, tr("Face Recognition"),
                                     tr("Cannot load %1.").arg(FileOpName));

            return;
        }

    }
    //function to load the image whenever fName is not empty
        if( FileOpName.size() )
        {
            IplImage *image = cvLoadImage(FileOpName.toAscii().data());

            IplImage *gray_image = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
            cvCvtColor(image, gray_image, CV_RGB2GRAY);

           
            QImage *q_image = new QImage((uchar*)gray_image->imageData,
                                         gray_image->width,
                                         gray_image->height,
                                         QImage::Format_RGB888
                                         );
            ui->label->setPixmap(QPixmap::fromImage(q_image->rgbSwapped()));
        }
}

Изображение криво отображается. Если выводить так-же image, то всё нормально. Значит проблема в cvCvtColor скорее всего. Но её используют везде так, как у меня. Пробывал менять CV_RGB2GRAY на CV_BGR2GRAY - не помогло.

Скриншот http://rghost.net/53819481/image.png

Странно всё как-то. Если считать картинку так:

IplImage *image = cvLoadImage(FileOpName.toAscii().data(), 0);

что равноценно - серой картинке, то отображаться она будет все равно криво-криво, как на скрине, может проблема в преобразовании изображения в QImage?

mrXorg ()

Телепатирую: поменяй QImage::Format_RGB888 на QImage::Format_Indexed8, и запили палитру. Да и Qt само умеет из цветного серое делать, если что.

nikitos ★★ ()
Последнее исправление: nikitos (всего исправлений: 1)
Ответ на: комментарий от nikitos

Спасибо. Менял форматы, но вот indexed8 не попробывал, просто не знаю эти форматы. Да, умеет, просто работать буду с Iplimage именно. Qimage только для вывода потребуется.

mrXorg ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.