• openCV学习——一、图像读取、显示、输出


    openCV学习——一、图像读取、显示、输出

     

    一、Mat imread(const string& filename,int flags=1),用于读取图片

    1、参数介绍

    filename:载入的图片的路径名。支持windows位图(bmp,dib)、JPEG文件(.jpeg,.jpg,.jpe)、JPEG2000文件(.jp2)、PNG图片(.png)、便携文件格式(.pbm,.pgm,.ppm)、Sun rasters光栅文件(.sr,.ras)、TIFF文件(.tiff,.tif)

    flags:表示载入标识,指定加载图像的颜色类型,默认为三通道彩色图像。

      常用标志符:

    • CV_LOAD_IMAGE_UNCHANGED——等价取值为-1
    • CV_LOAD_IMAGE_GRAYSCALE——等价取值为0,将图像转化为灰度
    • CV_LOAD_IMAGE_COLOR——等价取值为1,将图像转化为彩色
    • CV_LOAD_IMAGE_ANYDEPTH——等价取值为2,当载入图像深度为16位或32位,返回对应深度的图像,否则转化为8位图像返回
    • CV_LOAD_IMAGE_ANYCOLOR——等价取值为4,无损的源图像

     当输入有冲突时,采用较小数字值。CV_LOAD_IMAGE_COLOR|CV_LOAD_IMAGE_ANYCOLOR将载入三通道图;CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_ANYCOLOR将载入最真实无损的源图像。

      若以数值表示,则:

    • flags>0返回一个3通道的彩色图像
    • flags=0返回灰度图像
    • flags<0返回包含Alpha通道的加载图像

     当以彩色载入时,通道顺序为BGR(蓝、绿、红),而非RGB。

    二、void imshow(const string& winname,InputArray mat),用于显示一副图像

    1、参数介绍

    winname:填需要显示的窗口标志名称

    mat:填需要显示的图像

    2、注意事项

    如果窗口用CV_WINDOW_AUTOSIZE(默认值)创建的,那么imshow将显示图像原始大小,否则将进行缩放以适应窗口:

    • 如果图像为8位无符号类型,显示原来图像
    • 如果为16位无符号或32位整型,使用像素值除以256,将值的范围从[0,255*256]映射到[0,255]
    • 如果图像为32位浮点型,像素值乘以255.

    如果窗口创建时设定支持OpenGL(WINDOW_OPENGL),则imshow还支持ogl::Buffer、ogl::Texture2D以及gpu::GpuMat作为输入。

    三、void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE),用于创建窗口

    1、参数介绍

    name:填写窗口名称,将被用作窗口标志符

    flags:窗口标志类型:

    • WINDOW_NORMAL,可改变窗口大小
    • WINDOW_AUTOSIZE(值为1),窗口大小会自动调整以适应所要显示的图像,且用户无法手动调整
    • WINDOW_OPENGL,窗口创建时将支持OpenGL

    2、其他

    可以自行手动关闭窗口并释放空间:destroyWindow()或destroyAllWindows()。但是程序退出时,所有窗口将被系统自动关闭。

    四、bool imwrite(const string& filename, InputArray img,const vector<int>&params=vector<int>()),用于输出图像到文件

    1、参数介绍

    filename:填写要写入的文件名,需带上后缀,即文件类型名。

    img:需要输出的图像,一般为Mat类型。

    params:特定格式保存的参数编码,一般不需要填写。

    • 对于JPEG格式,参数从0到100,表示图片质量(CV_IMWRITE_JPEG_QUALITY)
    • 对于PNG格式,表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0~9.较高的值意味着更小的尺寸和更长的压缩时间,默认为3.
    • 对于PPM、PGM或PBM格式,表示一个二进制格式标识(CV_IMWRITE_PXM_BINARY),取值为0或1,默认为1.

    #include<opencv2/opencv.hpp>
    #include<iostream>
    int main(){
    cv::Mat m1 = cv::imread("D:/640.jpg",4);
    cv::namedWindow("windows",CV_WINDOW_AUTOSIZE);
    cv::imshow("windows",m1);
    std::cout << "rows" << m1.rows << std::endl;
    std::cout << "cols" << m1.cols << std::endl;
    std::cout << "chr" << m1.channels()<< std::endl;
    std::cout << "deeepth" << m1.depth() << std::endl;
    cv::waitKey(0);
    return 0;
    }

    作者:萌萌的美男子 
    出处:http://www.cnblogs.com/ivan-count/ 
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Dapper的常用操作
    git下载慢的解决方案
    笔记
    第06组 Beta冲刺(3/5)
    第06组 Beta冲刺(2/5)
    第06组 Beta冲刺(1/5)
    第06组 Alpha事后诸葛亮
    第06组 Alpha冲刺(6/6)
    第06组 Alpha冲刺(5/6)
    第06组 Alpha冲刺(4/6)
  • 原文地址:https://www.cnblogs.com/invisible2/p/10380798.html
Copyright © 2020-2023  润新知