0

我有一个使用 OpenCV 的 Qt 项目,并尝试将它移动到我的带有视网膜显示的 macbook。除 QPixmap 外,一切正常。当我尝试在 QLable 中显示图像时,它分为红色、绿色和蓝色的 3 部分。

在 Windows 上一切正常。

但是在我的 Macbook...

这是我将 IplImage* 转换为 QImage 的方法:

QImage CamStream::ToQImage(IplImage* image)

{

int height = image->height;
int width = image->width;

const uchar *qImageBuffer =(const uchar*)image->imageData;
QImage img(qImageBuffer, width, height, QImage::Format_RGB888);
return img.rgbSwapped();

}

这是我显示图像的方式:

void Main_window::ShowImage(QImage qimg)

{

QPixmap pxmap ( QPixmap::fromImage(qimg));
ui->lbl_video->setPixmap(pxmap);
ui_2->lbl_video->setPixmap(pxmap);

}

4

1 回答 1

0

尝试这个:

// IplImage* -> QImage
QImage CamStream::ToQImage(IplImage* src)
{
    IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, 3);
    cvCvtColor(src, dst, CV_BGRA2BGR);
    QImage qimg( (unsigned char*)dst->imageData,
                                 dst->width,
                                 dst->height,
                                 QImage::Format_RGB888 );
    cvReleaseImage(&dst);
    return qimg.rgbSwapped();
}
于 2014-04-14T23:13:34.453 回答