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()); }