我正在尝试捕获相机的实时视图,并将其重定向到QLabel中以显示。但只有一半的视图显示出来(见下图):
左侧的窗口使用cv :: imshow()显示,运作完美。我在不同的线程中捕获Mat,然后发射一个带有Qimage作为参数的信号,并在槽中设置图像到QLabel中。
以下是代码:
使用以下代码将Mat转换为QImage:
有什么建议来解决这个问题吗?
![Screenshot](https://istack.dev59.com/n8xDJ.webp)
以下是代码:
while(true){
cam >> mat;
cv::imshow("name",mat);
emit send_UIupdate(mat2qimage(mat));
}
在插槽设置中,将图像设置为Qlabel:
void Dialog::updateUI(const QImage &img){
label->setPixmap(QPixmap::fromImage(img));
}
使用以下代码将Mat转换为QImage:
QImage camera::mat2qimage(const cv::Mat& mat) {
cv::Mat rgb;
cv::cvtColor(mat, rgb, CV_BGR2RGB);
return QImage((const unsigned char*)(rgb.data), rgb.cols, rgb.rows, QImage::Format_RGB888);
}
有什么建议来解决这个问题吗?