【opencv】 读imread()、写imwrite()、显示imshow()。

2 篇文章 0 订阅

opencv的图像读写非简单,只需要一个函数接口就可以完成,下面直接给大家看代码

void FileLoad()
{
        Mat img = imread("../image/logo1.png");
        /*可以支持的文件类型
        .bmp .dib.jpeg .jpg .jpe .jp2 .png .pbm .pgm .ppm .sr .ras .tiff .tif
        imread()参数
        第一个是文件名 string
        第二个是加载图像的颜色类型,默认是1,如果 > 0 是三通道的彩色,= 0 灰度图像 < 0 Alpha通道图像
        */
        Mat img1 = imread("../image/logo1.png",2|4);
        Mat img2 = imread("../image/logo1.png",0);
        Mat img3 = imread("../image/logo1.png",199);

        /*imshow*/
        /*图下的显示,
        第一个参数是 string 显示的窗口名称
        第二个参数是 Mat 显示的图像
        */
        //imshow("1",img1);
        //imshow("2",img2);
        //imshow("3",img3);

        /*namedWindow 创建窗口*/
        /*namedWindow("img",WINDOW_NORMAL);
        Sleep(3000);
        destroyAllWindows();*/

        /*imwrite 输出文件*/
        /*
        第一个参数是string 文件名,要带上.jpg
        第二个参数是img 图像数据
        第三个是特定的参数编码。
        如果是jpg格式的图片,参数0-100是图片的质量,默认是95
        如果是png 表示压缩级别,0-9越高意味着更小的尺寸,更长压缩级别。 默认是3
        如果是ppm pgm pbm表示二进制标志,,默认是1
        */
}

这是一个imwrite()的例子生成alpha图像并保存代码如下

void demowrite()
{
        /*创建alpha通道的?Mat*/
        Mat mat(480 ,640,CV_8UC4);
        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] = UCHAR_MAX;
                        rgba[1] = saturate_cast<uchar>((float(mat.cols - j)) / ((float)mat.cols)*UCHAR_MAX);
                        rgba[2] = saturate_cast<uchar>((float(mat.rows - i)) / ((float)mat.rows)*UCHAR_MAX);
                        rgba[3] = saturate_cast<uchar>(0.5 * (rgba[1] + rgba[2]));
                }
        }

        vector<int> compression_parsms;
        /*opencv3*/
        compression_parsms.push_back(IMWRITE_PNG_COMPRESSION);
        compression_parsms.push_back(9);

        try
        {
                imwrite("alpha.png",mat,compression_parsms);
                imshow("alpha",mat);
                waitKey(0);
        }
        catch (runtime_error &e)
        {
                cout<<"输出失败"<<e.what();
                return;
        }
}

以上均参考学习自《opnecv3编程入门》感谢浅墨大佬。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值