rknn-toolkit2-v2.1.0-2024-08-08
/
rknpu2
/examples
/3rdparty
/opencv
/opencv-linux-armhf
/include
/opencv2
/imgcodecs.hpp
/*M/////////////////////////////////////////////////////////////////////////////////////// | |
// | |
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |
// | |
// By downloading, copying, installing or using the software you agree to this license. | |
// If you do not agree to this license, do not download, install, | |
// copy or use the software. | |
// | |
// | |
// License Agreement | |
// For Open Source Computer Vision Library | |
// | |
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |
// Third party copyrights are property of their respective owners. | |
// | |
// Redistribution and use in source and binary forms, with or without modification, | |
// are permitted provided that the following conditions are met: | |
// | |
// * Redistribution's of source code must retain the above copyright notice, | |
// this list of conditions and the following disclaimer. | |
// | |
// * Redistribution's in binary form must reproduce the above copyright notice, | |
// this list of conditions and the following disclaimer in the documentation | |
// and/or other materials provided with the distribution. | |
// | |
// * The name of the copyright holders may not be used to endorse or promote products | |
// derived from this software without specific prior written permission. | |
// | |
// This software is provided by the copyright holders and contributors "as is" and | |
// any express or implied warranties, including, but not limited to, the implied | |
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |
// In no event shall the Intel Corporation or contributors be liable for any direct, | |
// indirect, incidental, special, exemplary, or consequential damages | |
// (including, but not limited to, procurement of substitute goods or services; | |
// loss of use, data, or profits; or business interruption) however caused | |
// and on any theory of liability, whether in contract, strict liability, | |
// or tort (including negligence or otherwise) arising in any way out of | |
// the use of this software, even if advised of the possibility of such damage. | |
// | |
//M*/ | |
/** | |
@defgroup imgcodecs Image file reading and writing | |
@{ | |
@defgroup imgcodecs_c C API | |
@defgroup imgcodecs_ios iOS glue | |
@} | |
*/ | |
//////////////////////////////// image codec //////////////////////////////// | |
namespace cv | |
{ | |
//! @addtogroup imgcodecs | |
//! @{ | |
//! Imread flags | |
enum ImreadModes { | |
IMREAD_UNCHANGED = -1, //!< If set, return the loaded image as is (with alpha channel, otherwise it gets cropped). | |
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. | |
}; | |
//! Imwrite flags | |
enum ImwriteFlags { | |
IMWRITE_JPEG_QUALITY = 1, //!< For JPEG, it can be a quality from 0 to 100 (the higher is the better). Default value is 95. | |
IMWRITE_JPEG_PROGRESSIVE = 2, //!< Enable JPEG features, 0 or 1, default is False. | |
IMWRITE_JPEG_OPTIMIZE = 3, //!< Enable JPEG features, 0 or 1, default is False. | |
IMWRITE_JPEG_RST_INTERVAL = 4, //!< JPEG restart interval, 0 - 65535, default is 0 - no restart. | |
IMWRITE_JPEG_LUMA_QUALITY = 5, //!< Separate luma quality level, 0 - 100, default is 0 - don't use. | |
IMWRITE_JPEG_CHROMA_QUALITY = 6, //!< Separate chroma quality level, 0 - 100, default is 0 - don't use. | |
IMWRITE_PNG_COMPRESSION = 16, //!< For PNG, it can be the compression level from 0 to 9. A higher value means a smaller size and longer compression time. If specified, strategy is changed to IMWRITE_PNG_STRATEGY_DEFAULT (Z_DEFAULT_STRATEGY). Default value is 1 (best speed setting). | |
IMWRITE_PNG_STRATEGY = 17, //!< One of cv::ImwritePNGFlags, default is IMWRITE_PNG_STRATEGY_RLE. | |
IMWRITE_PNG_BILEVEL = 18, //!< Binary level PNG, 0 or 1, default is 0. | |
IMWRITE_PXM_BINARY = 32, //!< For PPM, PGM, or PBM, it can be a binary format flag, 0 or 1. Default value is 1. | |
IMWRITE_EXR_TYPE = (3 << 4) + 0, /* 48 */ //!< override EXR storage type (FLOAT (FP32) is default) | |
IMWRITE_WEBP_QUALITY = 64, //!< For WEBP, it can be a quality from 1 to 100 (the higher is the better). By default (without any parameter) and for quality above 100 the lossless compression is used. | |
IMWRITE_PAM_TUPLETYPE = 128,//!< For PAM, sets the TUPLETYPE field to the corresponding string value that is defined for the format | |
IMWRITE_TIFF_RESUNIT = 256,//!< For TIFF, use to specify which DPI resolution unit to set; see libtiff documentation for valid values | |
IMWRITE_TIFF_XDPI = 257,//!< For TIFF, use to specify the X direction DPI | |
IMWRITE_TIFF_YDPI = 258 //!< For TIFF, use to specify the Y direction DPI | |
}; | |
enum ImwriteEXRTypeFlags { | |
/*IMWRITE_EXR_TYPE_UNIT = 0, //!< not supported */ | |
IMWRITE_EXR_TYPE_HALF = 1, //!< store as HALF (FP16) | |
IMWRITE_EXR_TYPE_FLOAT = 2 //!< store as FP32 (default) | |
}; | |
//! Imwrite PNG specific flags used to tune the compression algorithm. | |
/** These flags will be modify the way of PNG image compression and will be passed to the underlying zlib processing stage. | |
- The effect of IMWRITE_PNG_STRATEGY_FILTERED is to force more Huffman coding and less string matching; it is somewhat intermediate between IMWRITE_PNG_STRATEGY_DEFAULT and IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY. | |
- IMWRITE_PNG_STRATEGY_RLE is designed to be almost as fast as IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY, but give better compression for PNG image data. | |
- The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. | |
- IMWRITE_PNG_STRATEGY_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications. | |
*/ | |
enum ImwritePNGFlags { | |
IMWRITE_PNG_STRATEGY_DEFAULT = 0, //!< Use this value for normal data. | |
IMWRITE_PNG_STRATEGY_FILTERED = 1, //!< Use this value for data produced by a filter (or predictor).Filtered data consists mostly of small values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress them better. | |
IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY = 2, //!< Use this value to force Huffman encoding only (no string match). | |
IMWRITE_PNG_STRATEGY_RLE = 3, //!< Use this value to limit match distances to one (run-length encoding). | |
IMWRITE_PNG_STRATEGY_FIXED = 4 //!< Using this value prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications. | |
}; | |
//! Imwrite PAM specific tupletype flags used to define the 'TUPETYPE' field of a PAM file. | |
enum ImwritePAMFlags { | |
IMWRITE_PAM_FORMAT_NULL = 0, | |
IMWRITE_PAM_FORMAT_BLACKANDWHITE = 1, | |
IMWRITE_PAM_FORMAT_GRAYSCALE = 2, | |
IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA = 3, | |
IMWRITE_PAM_FORMAT_RGB = 4, | |
IMWRITE_PAM_FORMAT_RGB_ALPHA = 5, | |
}; | |
/** @brief Loads an image from a file. | |
@anchor imread | |
The function imread loads an image from the specified file and returns it. If the image cannot be | |
read (because of missing file, improper permissions, unsupported or invalid format), the function | |
returns an empty matrix ( Mat::data==NULL ). | |
Currently, the following file formats are supported: | |
- Windows bitmaps - \*.bmp, \*.dib (always supported) | |
- JPEG files - \*.jpeg, \*.jpg, \*.jpe (see the *Note* section) | |
- JPEG 2000 files - \*.jp2 (see the *Note* section) | |
- Portable Network Graphics - \*.png (see the *Note* section) | |
- WebP - \*.webp (see the *Note* section) | |
- Portable image format - \*.pbm, \*.pgm, \*.ppm \*.pxm, \*.pnm (always supported) | |
- Sun rasters - \*.sr, \*.ras (always supported) | |
- TIFF files - \*.tiff, \*.tif (see the *Note* section) | |
- OpenEXR Image files - \*.exr (see the *Note* section) | |
- Radiance HDR - \*.hdr, \*.pic (always supported) | |
- Raster and Vector geospatial data supported by GDAL (see the *Note* section) | |
@note | |
- The function determines the type of an image by the content, not by the file extension. | |
- In the case of color images, the decoded images will have the channels stored in **B G R** order. | |
- When using IMREAD_GRAYSCALE, the codec's internal grayscale conversion will be used, if available. | |
Results may differ to the output of cvtColor() | |
- On Microsoft Windows\* OS and MacOSX\*, the codecs shipped with an OpenCV image (libjpeg, | |
libpng, libtiff, and libjasper) are used by default. So, OpenCV can always read JPEGs, PNGs, | |
and TIFFs. On MacOSX, there is also an option to use native MacOSX image readers. But beware | |
that currently these native image loaders give images with different pixel values because of | |
the color management embedded into MacOSX. | |
- On Linux\*, BSD flavors and 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 are embedded in the image file, the EXIF orientation will be taken into account | |
and thus the image will be rotated accordingly except if the flag @ref IMREAD_IGNORE_ORIENTATION is passed. | |
- 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 ); | |
/** @brief Loads a multi-page image from a file. | |
The function imreadmulti loads a multi-page image from the specified file into a vector of Mat objects. | |
@param filename Name of file to be loaded. | |
@param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_ANYCOLOR. | |
@param mats A vector of Mat objects holding each page, if more than one. | |
@sa cv::imread | |
*/ | |
CV_EXPORTS_W bool imreadmulti(const String& filename, CV_OUT std::vector<Mat>& mats, int flags = IMREAD_ANYCOLOR); | |
/** @brief Saves an image to a specified file. | |
The function imwrite saves the image to the specified file. The image format is chosen based on the | |
filename extension (see cv::imread for the list of extensions). In general, only 8-bit | |
single-channel or 3-channel (with 'BGR' channel order) images | |
can be saved using this function, with these exceptions: | |
- 16-bit unsigned (CV_16U) images can be saved in the case of PNG, JPEG 2000, and TIFF formats | |
- 32-bit float (CV_32F) images can be saved in TIFF, OpenEXR, and Radiance HDR formats; 3-channel | |
(CV_32FC3) TIFF images will be saved using the LogLuv high dynamic range encoding (4 bytes per pixel) | |
- PNG images with an alpha channel can be saved using this function. To do this, create | |
8-bit (or 16-bit) 4-channel image BGRA, where the alpha channel goes last. Fully transparent pixels | |
should have alpha set to 0, fully opaque pixels should have alpha set to 255/65535 (see the code sample below). | |
If the format, depth or channel order is different, use | |
Mat::convertTo and cv::cvtColor to convert it before saving. Or, use the universal FileStorage I/O | |
functions to save the image to XML or YAML format. | |
The sample below shows how to create a BGRA image and save it to a PNG file. It also demonstrates how to set custom | |
compression parameters: | |
@include snippets/imgcodecs_imwrite.cpp | |
@param filename Name of the file. | |
@param img Image to be saved. | |
@param params Format-specific parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) see cv::ImwriteFlags | |
*/ | |
CV_EXPORTS_W bool imwrite( const String& filename, InputArray img, | |
const std::vector<int>& params = std::vector<int>()); | |
/** @brief Reads an image from a buffer in memory. | |
The function imdecode reads an image from the specified buffer in the memory. If the buffer is too short or | |
contains invalid data, the function returns an empty matrix ( Mat::data==NULL ). | |
See cv::imread for the list of supported formats and flags description. | |
@note In the case of color images, the decoded images will have the channels stored in **B G R** order. | |
@param buf Input array or vector of bytes. | |
@param flags The same flags as in cv::imread, see cv::ImreadModes. | |
*/ | |
CV_EXPORTS_W Mat imdecode( InputArray buf, int flags ); | |
/** @overload | |
@param buf | |
@param flags | |
@param dst The optional output placeholder for the decoded matrix. It can save the image | |
reallocations when the function is called repeatedly for images of the same size. | |
*/ | |
CV_EXPORTS Mat imdecode( InputArray buf, int flags, Mat* dst); | |
/** @brief Encodes an image into a memory buffer. | |
The function imencode compresses the image and stores it in the memory buffer that is resized to fit the | |
result. See cv::imwrite for the list of supported formats and flags description. | |
@param ext File extension that defines the output format. | |
@param img Image to be written. | |
@param buf Output buffer resized to fit the compressed image. | |
@param params Format-specific parameters. See cv::imwrite and cv::ImwriteFlags. | |
*/ | |
CV_EXPORTS_W bool imencode( const String& ext, InputArray img, | |
CV_OUT std::vector<uchar>& buf, | |
const std::vector<int>& params = std::vector<int>()); | |
//! @} imgcodecs | |
} // cv | |