前言

云从科技还不错,基于JNI封装了java sdk

初始化


        CloudWalkFaceControl control = CloudWalkFaceControl.getInstance();
        int res=-1;
        res=CloudWalkFaceControl.cwInit(cwModels);
        if (0 != res) {
            log.error("cwInit error,code={}",res);
        }
        res=CloudWalkFaceControl.cwSetFrameDataCallBack(frameDataCallBack);
        if (0 != res) {
            log.error("cwSetFrameDataCallBack error,code={}",res);
        }
        res=CloudWalkFaceControl.cwSetSingleFace(1);
        if (0 != res) {
            log.error("cwSetSingleFace error,code={}",res);
        }
        res=CloudWalkFaceControl.cwOpenCamera_FaceControl(0, 640, 480, 0);
        if (0 != res) {
            log.error("cwOpenCamera_FaceControl error,code={}",res);
        }

帧回调


@Slf4j
@Service
public class FaceFrameCallBackImpl implements FrameDataCallBack {

    public FaceFrameCallBackImpl() {


    }

    @Override
    public int FrameCallBackData(int width, int height, int bytesPerPixel, int stride, byte[] data, String faces) {

        // 暂无展示需求

        /*opencv_core.IplImage iplImage = cvCreateImageHeader(cvSize(width,height), IPL_DEPTH_8U, 3);
        BytePointer bytePointer = new BytePointer(data);
        cvSetData(iplImage, bytePointer, ((width*3) + 3) >> 2 << 2);


        // 画人脸框
        if (StringUtils.isNotEmpty(faces)) {
            log.info("faces={}",faces);
            List<FacePos> facePosList = transToFacePos(faces);

            int faceNum = facePosList.size();
            for (int i = 0; i < faceNum; i++) {

                int left = facePosList.get(i).x;
                int top = facePosList.get(i).y;

                int right = left+facePosList.get(i).w;
                int bottom = top+facePosList.get(i).h;

                cvRectangle(iplImage,
                        cvPoint(left, top),
                        cvPoint(right, bottom),
                        CV_RGB(0, 255, 0),
                        1,
                        4,
                        0
                );
            }
        }

        cvNamedWindow("test",CV_WINDOW_NORMAL);
        cvResizeWindow("test", width, height);
        cvShowImage("test", iplImage);
        cvWaitKey(30);
        cvReleaseImageHeader(iplImage);*/

        return 0;
    }




}

人脸抓拍

            CaptureFaceData[] captureFaceData = new CaptureFaceData[]{new CaptureFaceData()};
            CloudWalkFaceControl.cwCaptureFace(captureFaceData);
            if (captureFaceData[0].faceData == null) {
                log.debug("没有抓拍到人脸数据");
                return;
            }

            String imgData = Base64.encodeBase64String(captureFaceData[0].faceData);


硬件      人脸识别

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!