如何将使用Qt Paint Application绘制的图像传输到Mat openCV

时间:2014-09-27 14:49:26

标签: c++ qt opencv

我使用Qt创建了一个绘图应用程序。现在,无论我绘制什么,我都需要处理图像。所以,我想在openCV中将绘制的图像传输到Mat。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

我编写了代码片段,用于将screnshot转移到cv::Mat,但我希望您了解主要想法,您应该做哪些对话。

    QPixmap win = QPixmap::grabWindow(QApplication::desktop()->winId());
    QImage scr = win.toImage().scaled(640,480);
    QImage screen = scr.convertToFormat(QImage::Format_RGB888);
    cv::Mat tmp(screen.height(),screen.width(),CV_8UC3,(uchar*)screen.bits(),screen.bytesPerLine());
    cvtColor(tmp, tmp,CV_BGR2RGB);

现在cv::Mat包含此图片。

示例:

QPixmap okno = QPixmap::grabWindow(QApplication::desktop()->winId());
QImage scr = okno.toImage().scaled(640,480);
QImage screen = scr.convertToFormat(QImage::Format_RGB888);
cv::Mat tmp(screen.height(),screen.width(),CV_8UC3,(uchar*)screen.bits(),screen.bytesPerLine());
cvtColor(tmp, tmp,CV_BGR2RGB);
cv::namedWindow("d");
cv::imshow("d",tmp);

imshow正确显示cv::Mat