firefly-rk3399 开发记录4-自定义QCameraViewfinder

本文介绍了如何在QCamera的取景器QCameraViewfinder基础上进行定制,以满足在显示图像上添加水印或OSD信息的需求。通过创建自定义的viewfinder类并覆写`present`和`supportedPixelFormats`方法,实现对每一帧数据的控制。在实际应用中,使用OpenCV进行YUV到RGB的转换,并解决了QImage与OpenCV颜色格式不匹配导致的色彩错误问题。
摘要由CSDN通过智能技术生成

1.QCameraViewfinder

QCamera的取景器,用于显示摄像头抓到的数据,前面所使用的就是这个。但是现在遇到一个需求,比如在一些场合中,需要在显示图像上打水印,OSD等信息,比如在人脸检测场景中一帮会要求识别画框,这里这里没有提供hook方式,不行,probe是并行的,并不会影响到显示这里。看有些博客上说继承一下QCameraViewfinder然后覆写paintevent

void QCameraViewfinderPri::paintEvent(QPaintEvent *e)
{    
	QCameraViewfinder::paintEvent (e);
    QPainter painter(this);
    painter.setPen(Qt::red);
    painter.drawRect(50, 50, 100, 100);
}

试了一下,并没有效果。最后发现说可以自己实现Viewfinder,在这样就可以控制显示了。

2.自定义viewfinder

继承的说明,网络上比较多,就不详细说明了。这里没有给显示策略,只是做了一次捕获操作。在继承过程中必须要实现纯虚函数present 和supportedPixelFormats

class QSmartViewFinder : public QAbstractVideoSurface
{
    Q_OBJECT
public:
    QSmartViewFinder(QObject *parent = NULL);
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值