1. 格式转换 yuv2rgb
#include <iostream>
#include <fstream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
#define IMAGE_LEN 622080
#define IMAGE_WIDTH 720
#define IMAGE_HEIGHT 576
int main()
{
ifstream fd_yuv("in.yuv");
//yuv Mat mem
cv::Mat yuv_img(IMAGE_HEIGHT*1.5, IMAGE_WIDTH, CV_8UC1);
//read to Mat
fd_yuv.read((char *)yuv_img.data, IMAGE_LEN);
//cv jpg 2 Mat
cv::Mat jpg_img;
cv::cvtColor(yuv_img, jpg_img, CV_YUV2RGB_NV12);
imwrite("out.jpg", jpg_img);
return 0;
}
2. opencv crop image
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
// Read image
Mat img = imread("test.jpg");
cout << "Width : " << img.size().width << endl;
cout << "Height: " << img.size().height << endl;
// Crop image //起点坐标和终点坐标的矩形
//img(Range(start_row, end_row), Range(start_col, end_col))
Mat crop_image = img(Range(80,280), Range(150,330));
//Save Image
imwrite("image.jpg", crop_image);
return 0;
}
3. opencv resize image
/*
src:输入图像
dst:输出图片
dsize:输出图像尺寸,0 则为 dsize=Size(round(fxsrc.cols),round(fysrc,rows))结果
fx:水平轴缩放系数,默认为0
fy:y轴缩放系数,默认为0
interpolation:插值方法,INTER_LINEAR线性插值,INTER_NN - 最近邻插值, INTER_LINEAR - 双线性插值..
void resize( InputArray src,
OutputArray dst,
Size dsize,
double fx = 0,
double fy = 0,
int interpolation = INTER_LINEAR );
*/
#include<iostream>
#include<opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
int main()
{
cv::Mat src = cv::imread("image.jpg", cv::IMREAD_UNCHANGED);
float scale = 0.8; //长缩放系数
float scaleH = 0.8; //高缩放系数
int width = int(src.cols * scale)
int height= int(src.rows * scale)
cv::Mat dst;
/* 缩放图像函数
src:原图像
dst:目标图像
参数3:目标图像的大小
*/
resize(src, dst, cv::Size(width, height));
//cv::imshow("src", src);
//cv::imshow("dst", dst);
//cv::waitKey();
}