2-18. 考勤机人脸采集发送次数优化

设置标志,看是否是同一个人脸进入到识别区域

    //标志是否是同一个人脸进入到识别区域
    int flag;

 构造函数内声明flag为0

 flag = 0;

人脸进入检测框后隔一段时间,等人脸稳定下来后再发送

flag初始为0,检测到人脸++,大于2时发送数据,发送之后置为-2,重新进行flag计数,大于2再进行发送

    if(faceRects.size()>0 && flag>=0)
    {
        Rect rect = faceRects.at(0); //第一个人脸矩形框
        //rectangle(SrcImage, rect, Scalar(0, 0, 255));
         //移动人脸认证图片
         ui ->headpicLb->move(rect.x, rect.y);
         
        if(flag > 2)
        {
            //把Mat数据转化为QbyteArray,  编码成JPG格式
            std::vector<uchar> buf;
            cv::imencode(".jpg", SrcImage, buf); // 存到buf中
            //将vector<uchar> 类型强制转化为数组
            QByteArray byte((const char*)buf.data(), buf.size());
            //准备发送
            quint64 backsize = byte.size();
            QByteArray sendData;
            QDataStream stream(&sendData,QIODevice::WriteOnly);//把数据打包为数据流
            stream.setVersion(QDataStream::Qt_5_14);
            stream<<backsize<<byte;
            //发送
            msocket.write(sendData);
            flag = -2;
        }
        flag++;
        
    }
    if(faceRects.size()==0)
    {
        // 把人脸认证框移动到中心位置
        ui->headpicLb->move(110,60);  
        flag = 0;
    }   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值