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;
}
网友评论