openCV篇-1 图像的读取、显示与保存

前言:纯属个人理解,不喜误喷,也希望大家给点关注支持
正文:
说到opencv对图像的读取、显示与保存,就不得不提到cv2后的一个特殊存在(Mat)和三个api(imread()、imshow()、imwrite())。
首先是Mat,Mat是opencv2版本重新对于图片处理的一个封装类,个人的观感就是这是opencv得到发展的一个重要特点,说到底图片处理在计算机中也就是对于矩阵的处理。
然后是三个api:
一、读取图片的api

cv::Mat src_img = cv::imread(scr, 0);
/*第一个参数
   *图片的地址,这里需要注意格式在不同的系统上填写的格式不同
*/
/*第二个参数
	 * -1 8深度 原通道
	 * 0  8深度 1通道
	 * 1 8深度 3通道
	 * 2 原深度 1通道
	 * 4 原深度 3通道
	 * CV_LOAD_IMAGE_ANYDEPTH 返回图像的深度不变 对应 2
	 * - 如果设置,当输入具有相应深度时返回16位/32位图像,否则将其转换为8位。
	 *
	 * CV_LOAD_IMAGE_COLOR 对应  1
	 * - 如果设置,则始终将图像转换为彩色图像
	 *
	 * CV_LOAD_IMAGE_GRAYSCALE 对应 0
	 * - 如果设置,则始终将图像转换为灰度图像,位深=8bit 通道数=1(颜色变灰)
	 *
	 *CV_LOAD_IMAGE_UNCHANGED 对应 -1
	 * – 在每个通道中,每个像素的位深为8 bit,通道数(颜色)保持不变
	 *
	 *CV_LOAD_IMAGE_ANYCOLOR  对应 4
	 * – 位深不变 , 通道数不变
	 *
	 * 组合
	 * CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR – 位深不变,通道数变 (最真实图像)
	 *
	 * CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYDEPTH – 位深不变,通道数=3(三通道)
	 *
	 * 如果输入有冲突的标志,将采用较小的数字值
	 */

二、显示图片api

cv::imshow(“显示图片的窗口名”,Mat mat);
/*第一个参数
   *图片显示的窗口的名字
   */
  /*第二个参数
  *属于Mat 类的图像矩阵
  */

重点注意
显示图片还需要在最后加一个方法 waitKey(0);
里面的参数表示显示的时间,
0表示一直显示,但是在某些版本里面为空时一直显示。

三、保存图片api

imwrite( const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());
/*第一个参数
    *"图片名字.格式";
   *第二个参数
    *Mat类型的图像数据;
   *第三个参数
    *特定格式保存的参数编码,所以一般可以不写
*/

最后是一个范例

#include <opencv2/opencv.hpp>
#include <iostream>
//#include <cmath>
using namespace cv;
using namespace std;
int main()
{
try{
    Mat img;
    img = imread("/home/cxf1/下载/1.jpg");

    if (img.empty()){
        cout<< "kuai l "<<endl;
        return -1;
    }
    imshow("img", img);
//    imwrite("/home/cxf1/img/1-1.jpg",img);
    waitKey(0);
    return 0;
    }catch(Exception e){
        cout<<"over"<<endl;
        return -1;
    }
}

效果
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值