我正在尝试从相机捕获实时视图,并将其重定向以显示在 QLabel 上。但只有一半的观点出现(见下文):
左侧窗口使用 cv::imshow() 显示,效果很好。我在不同的线程中捕获 Mat,然后以 Qimage 作为参数发出信号,然后将图像设置为插槽中的 QLabel。
这是代码:
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);
}
有什么建议可以解决这个问题吗??