tensorflower/seetaFace6Python

怎么使用Seetaface6中一些数据结构

Closed this issue · 0 comments

你好,在用你的封装,效果很好,就是活体检测假脸判断很多时候都是错的。
我现在主要的问题是:如何在python中使用Seetaface6中的一些数据结构:

例如下面一段代码(C++)

        double eyeSpan = sqrt(pow((points[1].x - points[0].x), 2) + pow((points[1].y - points[0].y), 2));
        //seeta::Size eyeSize(99, 99);

        seeta::Size eyeSize(102, 102);
        //·ÀÖ¹±ß½çÒç³ö
        int leftEyePointX = std::max(int(points[0].x - eyeSpan / 2), 0);
        int leftEyePointY = std::max(int(points[0].y - eyeSpan / 2), 0);
        leftEyePointX = std::min(int(image.width - eyeSpan / 2), leftEyePointX);
        leftEyePointY = std::min(int(image.height - eyeSpan / 2), leftEyePointY);

        double leftEyeSpanTemp = std::max(int(eyeSpan) , 1);
        int leftEyeSpanX = (leftEyePointX + leftEyeSpanTemp > image.width - 1) ? image.width - 1 - leftEyePointX: leftEyeSpanTemp;
        int leftEyeSpanY = (leftEyePointY + leftEyeSpanTemp > image.height - 1) ? image.height - 1 - leftEyePointY : leftEyeSpanTemp;
        leftEyeSpanTemp = std::min(int(leftEyeSpanX), int(leftEyeSpanY));
        

        int rightEyePointX = std::max(int(points[1].x - eyeSpan / 2), 0);
        int rightEyePointY = std::max(int(points[1].y - eyeSpan / 2), 0);
        rightEyePointX = std::min(int(image.width - eyeSpan / 2), rightEyePointX);
        rightEyePointY = std::min(int(image.height - eyeSpan / 2), rightEyePointY);


        double rightEyeSpanTemp = std::max(int(eyeSpan) , 1);
        int rightEyeSpanX = (rightEyePointX + rightEyeSpanTemp > image.width - 1) ? image.width - 1 - rightEyePointX: rightEyeSpanTemp;
        int rightEyeSpanY = (rightEyePointY + rightEyeSpanTemp > image.height - 1) ? image.height - 1 - rightEyePointY : rightEyeSpanTemp;
        rightEyeSpanTemp = std::min(int(rightEyeSpanX), int(rightEyeSpanY));

        //std::cout << "----x:" << leftEyePointX << ", y:" << leftEyePointY << ",width:" << leftEyeSpanTemp;
        //std::cout << "  x:" << rightEyePointX << ", y:" << rightEyePointY << ",width:" << rightEyeSpanTemp << std::endl << std::endl;

        seeta::Image leftEye = seeta::crop_resize(simage, seeta::Rect(leftEyePointX, leftEyePointY, leftEyeSpanTemp, leftEyeSpanTemp), eyeSize);

        seeta::Image rightEye = seeta::crop_resize(simage, seeta::Rect(rightEyePointX, rightEyePointY, rightEyeSpanTemp, rightEyeSpanTemp), eyeSize);

        leftstate = (EYE_STATE) m_impl->detect(leftEye);
        rightstate = (EYE_STATE) m_impl->detect(rightEye);

我在改写成python的时候,基本的数学计算还好改,但是涉及到数据结构的时候,一直没找到python下对应的
seeta::Image
seeta::crop_resize

可以给点建议吗?