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