首页 > 编程知识 正文

cv.imwrite,opencv二值化函数

时间:2023-05-05 10:41:02 阅读:60562 作者:4134

@briefLoadsanimagefromafile。

@anchorimread

thefunctionimreadloadsanimagefromthespecifiedfileandreturnsit.iftheimagecannotbe

读取(becauseofmissingfile,improperpermissions,unsupportedorinvalidformat ),thefunction

returnsanemptymatrix (mat :3360数据==null )。

函数imread从指定的文件加载并返回图像。 如果由于文件丢失、权限不正确、不支持或格式无效而无法读取图像,函数将返回空矩阵。 (Mat:data==NULL )。

当前支持的格式:

当前,thefollowingfileformatsaresupported :

-Windowsbitmaps-*.bmp, *.DIB (全部支持) ) ) ) ) ) ) )。

-JPEGfiles-*.jpeg、*.jpg、*.JPE(seethe*note*section ) ) ) ) ) 0

- JPEG 2000文件- *.jp2 (see the * note * section ) ) ) ) ) )。

-可移植网络图形- *.png (see the * note * section ) () ) ) ) 0

- webp-*.webp (see the * note * section ) ) ) ) ) ) ) )。

-可移植图像格式*.pgm、*.pgm、*.ppm*.pxm、*.pgm (允许支持) ) ) ) )

- PFM files-*.PFM (see the * note * section () ) ) ) ) ) ) ) ) )。

-Sunrasters-*.sr, *.ras (所有支持) ) ) )。

-TIFFfiles-*.tiff,*.TIF(seethe*note*section ) ) ) ) ) ) )。

- openexrimagefiles-*.exr (see the * note * section ) ) ) ) ) ) ) ) )。

-RadianceHDR-*.hdr, *.pic (所有支持) ) ) ) )。

- rasterandvectorgeospatialdatasupportedbygdal (see the * note * section ) ) ) ) ) 0

@note注意事项

- thefunctiondeterminesthetypeofanimagebythecontent,notbythefileextension http://www.Sina.com /

-Inthecaseofcolorimages,thedecodedimageswillhavethechannelsstoredin * * bgr * * order.http://www.Sina.com /

-WhenusingIMREAD_GRAYSCALE,thecodec ' sinternalgrayscaleconversionwillbeused,if available.resultsmaydiffertotheoutputpute 结果可能与cvtColor ()的输出不同

-OnMicrosoftWindowsOSandMacOSX,thecodecsshippedwithanopencvimage (libjpeg,

libpng,libtiff,andlibjasper (areusedbydefault.so,OpenCVcanalwaysreadJPEGs,PNGs,

andTIFFs.OnMacOSX,thereisalsoanoptiontousenativemacosximagereaders.but beware

thatcurrentlythesenativeimageloadersgiveimageswithdifferentpixelvaluesbecauseof

thecolormanagementembeddedintomacosx。

-OnLinux*,BSDflavorsand

 other Unix-like open-source operating systems, OpenCV looks for
    codecs supplied with an OS image. Install the relevant packages (do not forget the development
    files, for example, "libjpeg-dev", in Debian* and Ubuntu*) to get the codec support or turn
    on the OPENCV_BUILD_3RDPARTY_LIBS flag in CMake.
-   In the case you set *WITH_GDAL* flag to true in CMake and @ref IMREAD_LOAD_GDAL to load the image,
    then the [GDAL](http://www.gdal.org) driver will be used in order to decode the image, supporting
    the following formats: [Raster](http://www.gdal.org/formats_list.html),
    [Vector](http://www.gdal.org/ogr_formats.html).
-   If EXIF information is embedded in the image file, the EXIF orientation will be taken into account
    and thus the image will be rotated accordingly except if the flags @ref IMREAD_IGNORE_ORIENTATION
    or @ref IMREAD_UNCHANGED are passed.
-   Use the IMREAD_UNCHANGED flag to keep the floating point values from PFM image.
-   By default number of pixels must be less than 2^30. Limit can be set using system
    variable OPENCV_IO_MAX_IMAGE_PIXELS

@param filename Name of file to be loaded.
@param flags Flag that can take values of cv::ImreadModes
*/
CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR );

返回值,Mat 类型, 即返回读取的图像,读取图像失败时返回一个空的矩阵对象(Mat::data == NULL)参数1 filename, 读取的图片文件名,可以使用相对路径或者绝对路径,但必须带完整的文件扩展名(图片格式后缀)参数2 flags, 一个读取标记,用于选择读取图片的方式,默认值为IMREAD_COLOR,flag值的设定与用什么颜色格式读取图片有关,传0是灰度图。 enum ImreadModes {       IMREAD_UNCHANGED            = -1, //!< If set, return the loaded image as is (with alpha channel, otherwise it gets cropped). Ignore EXIF orientation.       IMREAD_GRAYSCALE            = 0,  //!< If set, always convert image to the single channel grayscale image (codec internal conversion).       IMREAD_COLOR                = 1,  //!< If set, always convert image to the 3 channel BGR color image.       IMREAD_ANYDEPTH             = 2,  //!< If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit.       IMREAD_ANYCOLOR             = 4,  //!< If set, the image is read in any possible color format.       IMREAD_LOAD_GDAL            = 8,  //!< If set, use the gdal driver for loading the image.       IMREAD_REDUCED_GRAYSCALE_2  = 16, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/2.       IMREAD_REDUCED_COLOR_2      = 17, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/2.       IMREAD_REDUCED_GRAYSCALE_4  = 32, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/4.       IMREAD_REDUCED_COLOR_4      = 33, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/4.       IMREAD_REDUCED_GRAYSCALE_8  = 64, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/8.       IMREAD_REDUCED_COLOR_8      = 65, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/8.       IMREAD_IGNORE_ORIENTATION   = 128 //!< If set, do not rotate the image according to EXIF's orientation flag.     }; c++定义python定义说明IMREAD_UNCHANGEDPython: cv.IMREAD_UNCHANGED如果设置,则按原样返回加载的图像(使用Alpha通道,否则会被裁剪)IMREAD_GRAYSCALEPython: cv.IMREAD_GRAYSCALE如果设置,则始终将图像转换为单通道灰度图像(编解码器内部转换)。IMREAD_COLORPython: cv.IMREAD_COLOR如果设置,请始终将图像转换为3通道BGR彩色图像。IMREAD_ANYDEPTHPython: cv.IMREAD_ANYDEPTH如果设置,则在输入具有相应深度时返回16位/ 32位图像,否则将其转换为8位。IMREAD_ANYCOLORPython: cv.IMREAD_ANYCOLOR如果设置,则以任何可能的颜色格式读取图像。IMREAD_LOAD_GDALPython: cv.IMREAD_LOAD_GDAL如果设置,使用gdal驱动程序加载图像IMREAD_REDUCED_GRAYSCALE_2Python: cv.IMREAD_REDUCED_GRAYSCALE_2如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/2。IMREAD_REDUCED_COLOR_2Python: cv.IMREAD_REDUCED_COLOR_2如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/2。IMREAD_REDUCED_GRAYSCALE_4Python: cv.IMREAD_REDUCED_GRAYSCALE_4如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/4IMREAD_REDUCED_COLOR_4Python: cv.IMREAD_REDUCED_COLOR_4如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/4IMREAD_REDUCED_GRAYSCALE_8Python: cv.IMREAD_REDUCED_GRAYSCALE_8如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/8。IMREAD_REDUCED_COLOR_8Python: cv.IMREAD_REDUCED_COLOR_8如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/8。IMREAD_IGNORE_ORIENTATIONPython: cv.IMREAD_IGNORE_ORIENTATION如果设置,请不要根据EXIF的方向标志旋转图像。 Mat对象的复制

函数原型

Mat clone() const;void copyTo( OutputArray m ) const;void copyTo( OutputArray m, InputArray mask) const;

copyTo()有重载,

inline Mat Mat::clone() const{   Mat m;   copyTo(m);   return m;}

opencv矩阵赋值函数copyToclone重载元算赋‘=’之间实现的功能相似均是给不同的矩阵赋值功能。

copyTo和clone函数基本相同,被赋值的矩阵和赋值矩阵之间空间独立,不共享同一空间(深拷贝)。

但是重载元算赋‘=’,被赋值的矩阵和赋值矩阵之间空间共享,改变任一个矩阵的值,会同时影响到另一个矩阵(浅拷贝)。当矩阵作为函数的返回值时其功能和重载元算赋‘=’相同,赋值运算赋会给矩阵空间增加一次计数,所以函数变量返回后函数内部申请的变量空间并不会被撤销,在主函数中仍可以正常使用传递后的参数。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。