opencv图像操作

opencv图像操作常见方法

一、图像初始化方法

  Mat M(100,100,CV_8UC3,Scalar(0,0,255));    //彩色图像初始化

  Mat M(100,100,CV_8UC1,255);                  //单通道图像初始化

Mat dst;
///* //深拷贝图像
dst = src.clone(); 

 

注:图像深拷贝,opencv 中mat直接赋值“=” ,是不会另外开辟内存的,mat就像一个指针。

//创建和src图像大小相同的图像,并且赋初值为红色
Mat m1;
m1.create(src.size(), src.type());
m1 = Scalar(0, 0, 255);
//初始化一个纯黑色的图片,与原图像的大小和类型一样
Mat m2 = Mat::zeros(src.size(), src.type());

 二、读取和保存

读取

//【1】读取源图像并检查图像是否读取成功  
    g_srcImage = imread("ddb22Picture000.jpg");
    if (!g_srcImage.data)
    {
        cout << "读取图像有误,请重新输入正确路径!\n";
        return -1;
    }
    imshow("源图像", g_srcImage);    //在窗口显示源图像
    cout << "源图像g_srcImage的行高:" << g_srcImage.rows << ", 列宽:" << g_srcImage.cols << endl;

保存

    vector<int> compression_params;
    compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);  //选择jpeg
    compression_params.push_back(80); //在这个填入你要的图片质量

    //std::vector<int>compression_params;
    //compression_params.push_back(cv::IMWRITE_PNG_COMPRESSION);
    //compression_params.push_back(9);
    try {
        imwrite("透明值图.png", mat, compression_params);
        //imwrite("透明值图.jpg", mat, compression_params);
        imshow("生成的PNG图", mat);
        fprintf(stdout, "PNG图片文件的数据保存完毕");
        cv::waitKey(0);
    }
    catch (runtime_error& ex) {
        fprintf(stderr, "图像转换发生错误:%s\n", ex.what());
   }

 

 

 

 

posted @ 2020-04-13 09:43  玥茹苟  阅读(287)  评论(0编辑  收藏  举报