if((rect.height+rect.y)<=frame.size().height||(rect.width+rect.x)<=frame.size().width)
{
QImage faceImageToSaved=Mat2QImage(dst);
//faceImageToSaved.save("mypic.png");
emit sendPhoto(faceImageToSaved,_boolTakeForFellow);
waitKey(50); //延时30毫秒
_boolSavePhotoFlag=false;
}
其中faceImageToSaved为局部变量,且其内部不支持深拷贝,可能在接收方接收前(接收方需要接收一个队列),被析构,故传送一个空白噪音值。
解决思路是:
使用copy进行深拷贝:
emit sendPhotoForShow(Mat2QImage(frame).copy());
再用this快速连接到本地:
connect(this,&DialogTakePhoto::sendPhotoForShow,this,[=](QImage img)
{
this->ui->labelplayscreen->setPixmap(QPixmap::fromImage(img));
});
关于信号连接的异步性
最新推荐文章于 2024-10-12 22:47:18 发布
该博客探讨了在图像处理中如何避免局部变量在传递过程中的销毁问题,通过使用深度拷贝确保数据完整。作者介绍了如何利用`copy`函数进行深拷贝,以解决QImage对象在传输前可能被析构的问题,并结合信号槽机制实现异步处理,将处理后的图像显示在界面上。此外,还展示了如何使用`connect`进行快速连接,以保证图片的正确显示。
摘要由CSDN通过智能技术生成