OpenCV 图像读取与表现

打印 上一主题 下一主题

主题 2021|帖子 2021|积分 6063

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、知识点:
1、读取图像
  (1)、Mat imread( const String & filename, int flags = IMREAD_COLOR_BGR );
  (2)、返回值: Mat,返回读取的图像。 若读取图像失败,则返回一个空的对象,对象.empty()为true。
  (3)、参数filename: String是std::string别名,要读取图像的文件名,带文件后缀。
  (4)、参数flags: 用于选择读取图像的方式,即用什么颜色格式读取图像,默认IMREAD_COLOR_BGR。
      IMREAD_UNCHANGED             //按原样返回加载的图像         
      IMREAD_GRAYSCALE             //将图像转换为单通道灰度图像 
      IMREAD_COLOR_BGR             //将图像转换为3通道BGR彩色图像        
      IMREAD_COLOR                 //同IMREAD_COLOR_BGR    
      IMREAD_ANYDEPTH              //当输入具有相应的深度时,返回16位/32位图像,否则将其转换为8位        
      IMREAD_ANYCOLOR              //以任何可能的颜色格式读取图像
      IMREAD_LOAD_GDAL             //利用gdal驱动程序加载图像       
      IMREAD_REDUCED_GRAYSCALE_2   //将图像转换为单通道灰度图像,图像巨细减小1/2
      IMREAD_REDUCED_COLOR_2       //将图像转换为3通道BGR彩色图像,并将图像巨细减小1/2
      IMREAD_REDUCED_GRAYSCALE_4   //将图像转换为单通道灰度图像,图像巨细减小1/4
      IMREAD_REDUCED_COLOR_4       //将图像转换为3通道BGR彩色图像,并将图像巨细减小1/4
      IMREAD_REDUCED_GRAYSCALE_8   //将图像转换为单通道灰度图像,图像巨细减小1/8
      IMREAD_REDUCED_COLOR_8       //将图像转换为3通道BGR彩色图像,图像巨细减小1/8
      IMREAD_IGNORE_ORIENTATION    //不要根据EXIF的方向标志旋转图像
      IMREAD_COLOR_RGB             //将图像转换为3通道RGB彩色图像 
      
2、表现图像
  (1)、void imshow(const String & winname, InputArray mat);
  (2)、参数winname: 用于表现图像的窗口名称,自定义。
  (3)、参数mat: 必要被表现的图像。
  (4)、默认情况下,imshow会自动调解窗口巨细,将图片按原始巨细表现,但当图片尺寸凌驾屏幕分辨率时,会发生图片表现不全标题。
  (5)、解决办法: 在imshow()之前调用namedWindow()。
  
3、创建窗口
  (1)、void namedWindow(const String & winname, int flags = WINDOW_AUTOSIZE);
  (2)、参数winname: 创建的窗口名称,自定义,用于标识窗口。 如果同名窗口已存在,则该函数不执行任何操作。
  (3)、参数flags: 窗口标志,默认WINDOW_AUTOSIZE。
      WINDOW_NORMAL        //用户可调解窗口巨细,可将全屏窗口切换到正常巨细
      WINDOW_AUTOSIZE      //用户无法调解窗口巨细,巨细受表现的图像限制
      WINDOW_OPENGL        //支持OpenGL的窗口
      WINDOW_FULLSCREEN    //将窗口设为全屏
      WINDOW_FREERATIO     //图像尽可能地扩展,无比例限制
      WINDOW_KEEPRATIO     //遵守图像比例
      WINDOW_GUI_EXPANDED  //状态栏和工具栏
      WINDOW_GUI_NORMAL    //老式的时尚方式
  (4)、窗口可以用作图像和轨迹条。
  
4、销毁窗口
  (1)、void destroyAllWindows();
  (2)、销毁所有打开的窗口。
  
5、等待按键
  (1)、int waitKey(int delay = 0);
  (2)、返回值: int型,返回按键代码。 若没有按键,指定时间过去,返回-1。
  (3)、参数delay: 等待时间,单位毫秒ms。 默认0,表示不停等待。
  
  
二、示例代码:
  1. #include <iostream>
  2. #include <opencv2/opencv.hpp>
  3. int main()
  4. {
  5.         cv::Mat src = cv::imread("C:\\Users\\ml\\Desktop\\Test\\MyOpenCVTest\\images\\1.png", cv::IMREAD_UNCHANGED);
  6.         if (src.empty())
  7.         {
  8.                 std::cout << "Could not load image..." << std::endl;
  9.                 return -1;
  10.         }
  11.         cv::namedWindow("加载图像", cv::WINDOW_FREERATIO);
  12.         cv::imshow("加载图像", src);
  13.         //辅助作用,如果不等待,代码会继续往后执行,销毁窗口、返回,程序会一闪而过,人眼看不到图像显示。
  14.         cv::waitKey(0);
  15.         cv::destroyAllWindows();
  16.         return 0;
  17. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

没腿的鸟

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表