1、如果图片是以Mat类型的格式表示的话,那么保存图片则用imwrite()函数
举例如下:
const char* path;
path=“E:\Data\right\right.bmp”
imwrite(path,riFrame);//riFrame为当前帧Mat
转换为IplImage保存:
IplImage qImg = IplImage(matrixJprg); // cv::Mat -> IplImage
cvSaveImage("./out.jpg", &qImg);
函数cvSaveImage保存图像到指定文件。图像格式的的选择依赖于filename的扩展名,请参考cvLoadImage。只有8位单通道或者3通道(通道顺序为’BGR’ )可以使用这个函数保存。如果格式,深度或者通道不符合要求,请先用cvCvtScale 和cvCvtColor转换;或者使用通用的cvSave保存图像为XML或者YAML格式。
2、编码解码:
CV_IMPL CvMat* cvEncodeImage( const char* ext,const CvArr* arr, const int* _params )
CV_IMPL IplImage* cvDecodeImage( const CvMat* _buf, int iscolor )
据说可以编码bmp, png, ppm and tiff (encoding only).
解码测试例子:
f=fopen(“a.jpg”,“r”);
unsigned char m=(unsigned char)malloc(1267*791);
fread(m,50000,1,f);
CvMat mat = cvMat(1267,791,CV_8UC1, m);
IplImage *p = cvDecodeImage( &mat, 1 );
旋转90度
Mat src = imread("E:/TestImg/t1.jpg");
Mat dst;
Point center(src.cols/2,src.rows/2); //旋转中心
double angle = -90.0; //角度
double scale = 1.0; //缩放系数
Mat rotMat = getRotationMatrix2D(center,angle,scale);