关于信号连接的异步性

68 篇文章 3 订阅
该博客探讨了在图像处理中如何避免局部变量在传递过程中的销毁问题,通过使用深度拷贝确保数据完整。作者介绍了如何利用`copy`函数进行深拷贝,以解决QImage对象在传输前可能被析构的问题,并结合信号槽机制实现异步处理,将处理后的图像显示在界面上。此外,还展示了如何使用`connect`进行快速连接,以保证图片的正确显示。
摘要由CSDN通过智能技术生成
  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));
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颢师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值