c++ - 开放式简历中的图像格式

标签 c++ opencv

我需要使用 opencv 和 c++ 以不同格式保存图像。
有一个用于显示图像的代码,并在按下某个键时退出。
显示 jpeg 图像的可能格式是什么?如何显示?

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

    using namespace cv;
    using namespace std;

    int main( int argc, char** argv )
    {
    if( argc != 2)
    {
    cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
    return -1;
    }

    Mat image;
    image = imread(argv[1], CV_LOAD_IMAGE_COLOR);  

    if(! image.data )                             
    {
    cout <<  "Could not open or find the image" << std::endl ;
    return -1;
    }

    namedWindow( "Display window", WINDOW_AUTOSIZE );
    imshow( "Display window", image );                 

    waitKey(0);                                          
    return 0;
    }

最佳答案

根据OpenCV doc :

函数 imread 从指定文件加载图像并返回。如果无法读取图像(由于缺少文件、权限不正确、格式不受支持或无效),该函数将返回一个空矩阵 (Mat::data==NULL)。目前,支持以下文件格式:

  • Windows 位图 - *.bmp、*.dib(始终支持)
  • JPEG 文件 - *.jpeg、*.jpg、*.jpe(参见注释部分)
  • JPEG 2000 文件 - *.jp2(见注释部分)
  • 可移植网络图形 - *.png(见注释部分)
  • WebP - *.webp(见注释部分)
  • 可移植图像格式 - *.pbm、*.pgm、*.ppm *.pxm、*.pnm(始终支持)
  • 太阳栅格 - *.sr、*.ras(始终支持)
  • TIFF 文件 - *.tiff、*.tif(参见注释部分)
  • OpenEXR 图像文件 - *.exr(参见注释部分)
  • Radiance HDR - *.hdr、*.pic(始终支持)

  • 备注
  • 该函数通过内容而不是文件扩展名确定图像的类型。
  • 在 Microsoft Windows* OS 和 MacOSX* 上,默认使用 OpenCV 图像(libjpeg、libpng、libtiff 和 libjasper)附带的编解码器。因此,OpenCV 始终可以读取 JPEG、PNG 和 TIFF。在 MacOSX 上,还有一个使用原生 MacOSX 图像阅读器的选项。但请注意,由于 MacOSX 中嵌入了颜色管理,目前这些原生图像加载器会提供具有不同像素值的图像。
  • 在 Linux*、BSD 风格和其他类 Unix 开源操作系统上,OpenCV 会查找随操作系统镜像提供的编解码器。安装相关软件包(不要忘记开发文件,例如 Debian* 和 Ubuntu* 中的“libjpeg-dev”)以获得编解码器支持或在 CMake 中打开 OPENCV_BUILD_3RDPARTY_LIBS 标志。

  • 备注

    在彩色图像的情况下,解码图像的 channel 将以 B G R 顺序存储。

    关于c++ - 开放式简历中的图像格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32635549/

    相关文章:

    c++ - 正确的 -std 与 'decltype(auto)' 以及如何使用 Cmake 更改 -std

    c++ - 我想根据任意掩码打包这些位

    c++: std::endl 和操作符编译错误>>

    python - OpenCV 找到正确的阈值来确定图像匹配与否与匹配分数

    c++ - 使用 SVM 进行图像分类

    c++ - 运算符在 C++ 中使用哪种重载?

    c++ - 使用对 char 数组的隐式转换或编写显式转换方法是否明智?

    python - 在 Python、OpenCV 中将对象映射到圆

    python - OpenCV 和 Python : Face Detection using haarcascades is detecting many boxes as eyes.

    python - 在 python 中调整 DICOM 图像的大小