cv::mat的基本操作 ***** **

来源:互联网 发布:淘宝买手机花呗分期购 编辑:程序博客网 时间:2024/05/29 12:48

Fr:  cv::mat的基本操作

使用imwrite函数,将Mat对象保存到指定的文件中。

filename,指定的文件
img  要保存的Mat对象
params 用来指定图像的保存编码方式。
使用filename的扩展名来指定图像的保存格式(.jpg  .png  .bmp),对于不同的图像保存类型,params是不同的值
  • JPEG,params用来指定图像的质量(0到100),默认的是95.  CV_IMWRITE_JPEG_QUALITY
  • PNG,params用来指定图像的压缩级别(0到9),压缩级别越高图像占用的空间越小,保存图像所用的时间越久。默认值是3. CV_IMWRITE_PNG_COMPRESSION
  • PPM,PGM,PBM,params是一个标记(0或者1),默认的是1.CV_IMWRITE_PXM_BINARY
imwrite只能保存8位(或者是16位无符号(CV_16UC)的PNG,JPEG200或者TIFF图像)单通道或者三通道的图像,如果要保存的不是这样的图片,可以使用convertTo或者cvtColor来进行转变。
下面代码展示了如果使用imwrite向文件中写入一个4通道的png图像

void createAlphaMat(Mat &mat) {    for(int i = 0 ; i < mat.rows ; i ++) {        for(int j = 0 ; j < mat.cols ; j ++) {            Vec4b &rgba = mat.at<Vec4b>(i,j);            rgba[0] = 123; //UCHAR_MAX ;            rgba[1] = 0; //saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) * UCHAR_MAX);            rgba[2] = 0; //saturate_cast<uchar>((float (mat.rows - i)) / ((float)mat.rows) * UCHAR_MAX);            rgba[3] = 255; //saturate_cast<uchar>(0.5 * (rgba[1] + rgba[2]));        }    }}int main(){    Mat mat(480,640,CV_8UC4);    createAlphaMat(mat);    vector<int> compression_params ;    compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);    compression_params.push_back(9);    imwrite("alpha.png",mat,compression_params);    return 0;}






原创粉丝点击