Newer
Older
CasicIrisIdentify / device / IrisCameraCapEventHandler.cpp
#include "IrisCameraCapEventHandler.h"
#include <QDebug>

IrisCameraCapEventHandler::IrisCameraCapEventHandler(QObject *parent) : QObject(parent)
{

}

void IrisCameraCapEventHandler::DoOnImageCaptured(CImageDataPointer &objImageDataPointer, void *pUserParam)
{
    if (objImageDataPointer.IsNull() == false)
    {
        CGXDevicePointer* cam = (CGXDevicePointer *) pUserParam;

        auto camName = cam->getPtr()->GetDeviceInfo().GetUserID();
        int width = objImageDataPointer->GetWidth();
        int height = objImageDataPointer->GetHeight();

        uchar * pBuffer = (BYTE*)objImageDataPointer->GetBuffer();
        if (pBuffer != NULL)
        {
            // 相机拍摄下的图像1440*1080, 直接用于算法判断
            QImage img = QImage(pBuffer, width, height, QImage::Format_Grayscale8); // 用于展示
            QImage imgDisp;

            // 图像逆时针旋转90度
            img = img.transformed(QTransform().rotate(90));

            // 用于显示的图像需要缩小到480 * 640的尺寸
            imgDisp = img.scaled(SettingConfig::getInstance().IRIS_DISPLAY_WIDTH, SettingConfig::getInstance().IRIS_DISPLAY_HEIGHT);

            // 发送到界面进行显示
            emit sendIrisFrameToDraw(imgDisp);

            // 创建虹膜信息对象
            CasicIrisInfo irisInfo;
            irisInfo.hasEye = false;

            // 存入图像栈
            cv::Mat irisMat = ImageUtil::QImageToMat(img);
            irisInfo.matData = irisMat;

            ProMemory::getInstance().pushCasicIris(irisInfo);

            /* 相机控制只拍图 不找眼
            casic::iris::CasicIrisInterface::getInstance().setMinEyeSize(360);
            irisInfo = casic::iris::CasicIrisInterface::getInstance().findEye(irisInfo);
            */
        }
    }
}