Search in sources :

Example 1 with IplImage

use of org.bytedeco.opencv.opencv_core.IplImage in project blog_demos by zq2599.

the class AbstractCameraApplication method grabAndOutput.

/**
 * 预览和输出
 * @param grabSeconds 持续时长
 * @throws Exception
 */
private void grabAndOutput(int grabSeconds) throws Exception {
    // 添加水印时用到的时间工具
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    long endTime = System.currentTimeMillis() + 1000L * grabSeconds;
    // 两帧输出之间的间隔时间,默认是1000除以帧率,子类可酌情修改
    int interVal = getInterval();
    // 水印在图片上的位置
    org.bytedeco.opencv.opencv_core.Point point = new org.bytedeco.opencv.opencv_core.Point(15, 35);
    Frame captureFrame;
    IplImage img;
    Mat mat;
    // 超过指定时间就结束循环
    while (System.currentTimeMillis() < endTime) {
        // 取一帧
        captureFrame = grabFrame();
        if (null == captureFrame) {
            log.error("帧对象为空");
            break;
        }
        // 将帧对象转为IplImage对象
        img = openCVConverter.convert(captureFrame);
        // 镜像翻转
        cvFlip(img, img, 1);
        // IplImage转mat
        mat = new Mat(img);
        // 在图片上添加水印,水印内容是当前时间,位置是左上角
        opencv_imgproc.putText(mat, simpleDateFormat.format(new Date()), point, opencv_imgproc.CV_FONT_VECTOR0, 0.8, new Scalar(0, 200, 255, 0), 1, 0, false);
        // 子类输出
        output(openCVConverter.convert(mat));
        // 适当间隔,让肉感感受不到闪屏即可
        if (interVal > 0) {
            Thread.sleep(interVal);
        }
    }
    log.info("输出结束");
}
Also used : Mat(org.bytedeco.opencv.opencv_core.Mat) IplImage(org.bytedeco.opencv.opencv_core.IplImage) Date(java.util.Date) Scalar(org.bytedeco.opencv.opencv_core.Scalar) SimpleDateFormat(java.text.SimpleDateFormat)

Example 2 with IplImage

use of org.bytedeco.opencv.opencv_core.IplImage in project blog_demos by zq2599.

the class Train2 method train.

private void train(String[][] sources, String outputPath) throws IOException {
    int totalImageNums = 0;
    for (String[] oneKindFaces : sources) {
        totalImageNums += oneKindFaces.length;
    }
    MatVector imageIndexMatMap = new MatVector(totalImageNums);
    // 这里面用来记录每一张照片的类型
    Mat lables = new Mat(totalImageNums, 1, CV_32SC1);
    IntBuffer lablesBuf = lables.createBuffer();
    int kindIndex = 1;
    int imageIndex = 0;
    IplImage img;
    IplImage grayImg;
    for (String[] oneOfFaces : sources) {
        for (String face : oneOfFaces) {
            // imageIndex代表第几张,kindIndex代表第几类
            // 将每一张的类型存储在lablesBuf中
            lablesBuf.put(imageIndex, (byte) kindIndex);
            img = cvLoadImage(face);
            grayImg = IplImage.create(img.width(), img.height(), IPL_DEPTH_8U, 1);
            Mat faceMat = matConv.convertToMat(iplConv.convert(grayImg));
            resize(faceMat, faceMat, new Size(122, 122));
            imageIndexMatMap.put(imageIndex, faceMat);
            imageIndex++;
        }
        kindIndex++;
    }
    FaceRecognizer faceRecognizer = FisherFaceRecognizer.create();
    faceRecognizer.train(imageIndexMatMap, lables);
    faceRecognizer.save(outputPath);
    faceRecognizer.close();
}
Also used : Mat(org.bytedeco.opencv.opencv_core.Mat) IplImage(org.bytedeco.opencv.opencv_core.IplImage) Size(org.bytedeco.opencv.opencv_core.Size) IntBuffer(java.nio.IntBuffer) FaceRecognizer(org.bytedeco.opencv.opencv_face.FaceRecognizer) FisherFaceRecognizer(org.bytedeco.opencv.opencv_face.FisherFaceRecognizer) MatVector(org.bytedeco.opencv.opencv_core.MatVector)

Example 3 with IplImage

use of org.bytedeco.opencv.opencv_core.IplImage in project javacv by bytedeco.

the class RealSense2FrameGrabber method grabCVFrame.

private Frame grabCVFrame(int streamType, int streamIndex, int iplDepth, int iplChannels) throws Exception {
    Frame outputFrame;
    // get frame of type if available
    rs2_frame frame = findFrameByStreamType(this.frameset, streamType, streamIndex);
    if (frame == null)
        return null;
    // get frame data
    Pointer frameData = getFrameData(frame);
    Size size = getFrameSize(frame);
    // create cv frame
    IplImage image = IplImage.createHeader(size.width(), size.height(), iplDepth, iplChannels);
    cvSetData(image, frameData, size.width() * iplChannels * iplDepth / 8);
    outputFrame = converter.convert(image);
    // add timestamp
    double timestamp = getFrameTimeStamp(frame);
    outputFrame.timestamp = Math.round(timestamp);
    // cleanup
    rs2_release_frame(frame);
    return outputFrame;
}
Also used : IplImage(org.bytedeco.opencv.opencv_core.IplImage) Size(org.bytedeco.opencv.opencv_core.Size) Pointer(org.bytedeco.javacpp.Pointer) IntPointer(org.bytedeco.javacpp.IntPointer)

Aggregations

IplImage (org.bytedeco.opencv.opencv_core.IplImage)3 Mat (org.bytedeco.opencv.opencv_core.Mat)2 Size (org.bytedeco.opencv.opencv_core.Size)2 IntBuffer (java.nio.IntBuffer)1 SimpleDateFormat (java.text.SimpleDateFormat)1 Date (java.util.Date)1 IntPointer (org.bytedeco.javacpp.IntPointer)1 Pointer (org.bytedeco.javacpp.Pointer)1 MatVector (org.bytedeco.opencv.opencv_core.MatVector)1 Scalar (org.bytedeco.opencv.opencv_core.Scalar)1 FaceRecognizer (org.bytedeco.opencv.opencv_face.FaceRecognizer)1 FisherFaceRecognizer (org.bytedeco.opencv.opencv_face.FisherFaceRecognizer)1