美文网首页
opencv for java

opencv for java

作者: hehehehe | 来源:发表于2020-10-23 15:02 被阅读0次

https://docs.opencv.org/3.4.2/javadoc/index.html

<dependency>
     <groupId>org.openpnp</groupId>
     <artifactId>opencv</artifactId>
     <version>3.4.2-1</version>
 </dependency>

安装

为了支持java需要先yum install ant

wget https://github.com/opencv/opencv/archive/3.4.2.zip
$cd opencv  
$madir build     
$cd build
  
$cmake -D WITH_TBB=ON -D WITH_EIGEN=ON ..    
$cmake -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF ..    
$cmake -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF -D BUILD_opencv_gpucodec=OFF -D BUILD_opencv_gpufeatures2d=OFF -D BUILD_opencv_gpufilters=OFF -D BUILD_opencv_gpuimgproc=OFF -D BUILD_opencv_gpulegacy=OFF -D BUILD_opencv_gpuoptflow=OFF -D BUILD_opencv_gpustereo=OFF -D BUILD_opencv_gpuwarping=OFF ..    
$cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..  
  
$make  
$sudo make install
System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
byte[] bytes = FileUtils.readFileToByteArray(new File("./20200408180400133_FR_0.yuv"));
Mat img1 = new Mat(1080 , 1920, CvType.CV_8UC2); System.out.println(img1.width());
System.out.println(img1.height());
System.out.println(img1.channels());
img1.put(0, 0, bytes);
Mat img2 = new Mat(1080, 1920, CvType.CV_8UC3);
Imgproc.cvtColor(img1, img2, Imgproc.COLOR_YUV2BGR_YUY2);
Imgcodecs.imwrite("./20200408180400133_FR_0.jpg", img2);

C++

#include <iostream>
#include <io.h>
#include <stdlib.h>
#include <string>
#include <vector>

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/types_c.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

void yuv2jpg(string inputFileName, string savepath,int width,int height,int yuv2jpg_type)
{
    int iImageSize = width * height * 2;
    FILE * fpln = fopen(inputFileName.data(), "rb+");
    if (fpln == NULL) {
        printf("read yuv error.\n");
        return;
    }
    cv::Mat yuvImg;
    cv::Mat rgbImg(height, width, CV_8UC3);
    yuvImg.create(height, width, CV_8UC2);
    unsigned char *pYUVbuf = new unsigned char[iImageSize];
    fread(pYUVbuf, iImageSize * sizeof(unsigned char), 1, fpln);
    memcpy(yuvImg.data, pYUVbuf, iImageSize * sizeof(unsigned char));
    cv::cvtColor(yuvImg, rgbImg, 116);
    imwrite(savepath, rgbImg);
    fclose(fpln);
}

int main() {
    string yuv = "F:/pop2pop/p3/20200408180400133_FR_0.yuv";
    yuv2jpg(yuv, "F:/pop2pop/p3/20200408180400133_FR_0.jpg",1920,1080,116);
    return 0;
}

相关文章

网友评论

      本文标题:opencv for java

      本文链接:https://www.haomeiwen.com/subject/jdpvmktx.html