/work/install-coverage/include/opencv4/opencv2/imgcodecs.hpp
Line | Count | Source (jump to first uncovered line) |
1 | | /*M/////////////////////////////////////////////////////////////////////////////////////// |
2 | | // |
3 | | // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. |
4 | | // |
5 | | // By downloading, copying, installing or using the software you agree to this license. |
6 | | // If you do not agree to this license, do not download, install, |
7 | | // copy or use the software. |
8 | | // |
9 | | // |
10 | | // License Agreement |
11 | | // For Open Source Computer Vision Library |
12 | | // |
13 | | // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. |
14 | | // Copyright (C) 2009, Willow Garage Inc., all rights reserved. |
15 | | // Third party copyrights are property of their respective owners. |
16 | | // |
17 | | // Redistribution and use in source and binary forms, with or without modification, |
18 | | // are permitted provided that the following conditions are met: |
19 | | // |
20 | | // * Redistribution's of source code must retain the above copyright notice, |
21 | | // this list of conditions and the following disclaimer. |
22 | | // |
23 | | // * Redistribution's in binary form must reproduce the above copyright notice, |
24 | | // this list of conditions and the following disclaimer in the documentation |
25 | | // and/or other materials provided with the distribution. |
26 | | // |
27 | | // * The name of the copyright holders may not be used to endorse or promote products |
28 | | // derived from this software without specific prior written permission. |
29 | | // |
30 | | // This software is provided by the copyright holders and contributors "as is" and |
31 | | // any express or implied warranties, including, but not limited to, the implied |
32 | | // warranties of merchantability and fitness for a particular purpose are disclaimed. |
33 | | // In no event shall the Intel Corporation or contributors be liable for any direct, |
34 | | // indirect, incidental, special, exemplary, or consequential damages |
35 | | // (including, but not limited to, procurement of substitute goods or services; |
36 | | // loss of use, data, or profits; or business interruption) however caused |
37 | | // and on any theory of liability, whether in contract, strict liability, |
38 | | // or tort (including negligence or otherwise) arising in any way out of |
39 | | // the use of this software, even if advised of the possibility of such damage. |
40 | | // |
41 | | //M*/ |
42 | | |
43 | | #ifndef OPENCV_IMGCODECS_HPP |
44 | | #define OPENCV_IMGCODECS_HPP |
45 | | |
46 | | #include "opencv2/core.hpp" |
47 | | |
48 | | /** |
49 | | @defgroup imgcodecs Image file reading and writing |
50 | | @{ |
51 | | @defgroup imgcodecs_c C API |
52 | | @defgroup imgcodecs_flags Flags used for image file reading and writing |
53 | | @defgroup imgcodecs_ios iOS glue |
54 | | @defgroup imgcodecs_macosx MacOS(OSX) glue |
55 | | @} |
56 | | */ |
57 | | |
58 | | //////////////////////////////// image codec //////////////////////////////// |
59 | | namespace cv |
60 | | { |
61 | | |
62 | | //! @addtogroup imgcodecs |
63 | | //! @{ |
64 | | |
65 | | //! @addtogroup imgcodecs_flags |
66 | | //! @{ |
67 | | |
68 | | //! Imread flags |
69 | | enum ImreadModes { |
70 | | IMREAD_UNCHANGED = -1, //!< If set, return the loaded image as is (with alpha channel, otherwise it gets cropped). Ignore EXIF orientation. |
71 | | IMREAD_GRAYSCALE = 0, //!< If set, always convert image to the single channel grayscale image (codec internal conversion). |
72 | | IMREAD_COLOR = 1, //!< If set, always convert image to the 3 channel BGR color image. |
73 | | IMREAD_ANYDEPTH = 2, //!< If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit. |
74 | | IMREAD_ANYCOLOR = 4, //!< If set, the image is read in any possible color format. |
75 | | IMREAD_LOAD_GDAL = 8, //!< If set, use the gdal driver for loading the image. |
76 | | IMREAD_REDUCED_GRAYSCALE_2 = 16, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/2. |
77 | | IMREAD_REDUCED_COLOR_2 = 17, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/2. |
78 | | IMREAD_REDUCED_GRAYSCALE_4 = 32, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/4. |
79 | | IMREAD_REDUCED_COLOR_4 = 33, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/4. |
80 | | IMREAD_REDUCED_GRAYSCALE_8 = 64, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/8. |
81 | | IMREAD_REDUCED_COLOR_8 = 65, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/8. |
82 | | IMREAD_IGNORE_ORIENTATION = 128 //!< If set, do not rotate the image according to EXIF's orientation flag. |
83 | | }; |
84 | | |
85 | | //! Imwrite flags |
86 | | enum ImwriteFlags { |
87 | | IMWRITE_JPEG_QUALITY = 1, //!< For JPEG, it can be a quality from 0 to 100 (the higher is the better). Default value is 95. |
88 | | IMWRITE_JPEG_PROGRESSIVE = 2, //!< Enable JPEG features, 0 or 1, default is False. |
89 | | IMWRITE_JPEG_OPTIMIZE = 3, //!< Enable JPEG features, 0 or 1, default is False. |
90 | | IMWRITE_JPEG_RST_INTERVAL = 4, //!< JPEG restart interval, 0 - 65535, default is 0 - no restart. |
91 | | IMWRITE_JPEG_LUMA_QUALITY = 5, //!< Separate luma quality level, 0 - 100, default is -1 - don't use. |
92 | | IMWRITE_JPEG_CHROMA_QUALITY = 6, //!< Separate chroma quality level, 0 - 100, default is -1 - don't use. |
93 | | IMWRITE_JPEG_SAMPLING_FACTOR = 7, //!< For JPEG, set sampling factor. See cv::ImwriteJPEGSamplingFactorParams. |
94 | | 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). |
95 | | IMWRITE_PNG_STRATEGY = 17, //!< One of cv::ImwritePNGFlags, default is IMWRITE_PNG_STRATEGY_RLE. |
96 | | IMWRITE_PNG_BILEVEL = 18, //!< Binary level PNG, 0 or 1, default is 0. |
97 | | IMWRITE_PXM_BINARY = 32, //!< For PPM, PGM, or PBM, it can be a binary format flag, 0 or 1. Default value is 1. |
98 | | IMWRITE_EXR_TYPE = (3 << 4) + 0, /* 48 */ //!< override EXR storage type (FLOAT (FP32) is default) |
99 | | IMWRITE_EXR_COMPRESSION = (3 << 4) + 1, /* 49 */ //!< override EXR compression type (ZIP_COMPRESSION = 3 is default) |
100 | | IMWRITE_EXR_DWA_COMPRESSION_LEVEL = (3 << 4) + 2, /* 50 */ //!< override EXR DWA compression level (45 is default) |
101 | | 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. |
102 | | IMWRITE_HDR_COMPRESSION = (5 << 4) + 0, /* 80 */ //!< specify HDR compression |
103 | | IMWRITE_PAM_TUPLETYPE = 128,//!< For PAM, sets the TUPLETYPE field to the corresponding string value that is defined for the format |
104 | | IMWRITE_TIFF_RESUNIT = 256,//!< For TIFF, use to specify which DPI resolution unit to set; see libtiff documentation for valid values |
105 | | IMWRITE_TIFF_XDPI = 257,//!< For TIFF, use to specify the X direction DPI |
106 | | IMWRITE_TIFF_YDPI = 258,//!< For TIFF, use to specify the Y direction DPI |
107 | | IMWRITE_TIFF_COMPRESSION = 259,//!< For TIFF, use to specify the image compression scheme. See libtiff for integer constants corresponding to compression formats. Note, for images whose depth is CV_32F, only libtiff's SGILOG compression scheme is used. For other supported depths, the compression scheme can be specified by this flag; LZW compression is the default. |
108 | | IMWRITE_JPEG2000_COMPRESSION_X1000 = 272 //!< For JPEG2000, use to specify the target compression rate (multiplied by 1000). The value can be from 0 to 1000. Default is 1000. |
109 | | }; |
110 | | |
111 | | enum ImwriteJPEGSamplingFactorParams { |
112 | | IMWRITE_JPEG_SAMPLING_FACTOR_411 = 0x411111, //!< 4x1,1x1,1x1 |
113 | | IMWRITE_JPEG_SAMPLING_FACTOR_420 = 0x221111, //!< 2x2,1x1,1x1(Default) |
114 | | IMWRITE_JPEG_SAMPLING_FACTOR_422 = 0x211111, //!< 2x1,1x1,1x1 |
115 | | IMWRITE_JPEG_SAMPLING_FACTOR_440 = 0x121111, //!< 1x2,1x1,1x1 |
116 | | IMWRITE_JPEG_SAMPLING_FACTOR_444 = 0x111111 //!< 1x1,1x1,1x1(No subsampling) |
117 | | }; |
118 | | |
119 | | |
120 | | enum ImwriteEXRTypeFlags { |
121 | | /*IMWRITE_EXR_TYPE_UNIT = 0, //!< not supported */ |
122 | | IMWRITE_EXR_TYPE_HALF = 1, //!< store as HALF (FP16) |
123 | | IMWRITE_EXR_TYPE_FLOAT = 2 //!< store as FP32 (default) |
124 | | }; |
125 | | |
126 | | enum ImwriteEXRCompressionFlags { |
127 | | IMWRITE_EXR_COMPRESSION_NO = 0, //!< no compression |
128 | | IMWRITE_EXR_COMPRESSION_RLE = 1, //!< run length encoding |
129 | | IMWRITE_EXR_COMPRESSION_ZIPS = 2, //!< zlib compression, one scan line at a time |
130 | | IMWRITE_EXR_COMPRESSION_ZIP = 3, //!< zlib compression, in blocks of 16 scan lines |
131 | | IMWRITE_EXR_COMPRESSION_PIZ = 4, //!< piz-based wavelet compression |
132 | | IMWRITE_EXR_COMPRESSION_PXR24 = 5, //!< lossy 24-bit float compression |
133 | | IMWRITE_EXR_COMPRESSION_B44 = 6, //!< lossy 4-by-4 pixel block compression, fixed compression rate |
134 | | IMWRITE_EXR_COMPRESSION_B44A = 7, //!< lossy 4-by-4 pixel block compression, flat fields are compressed more |
135 | | IMWRITE_EXR_COMPRESSION_DWAA = 8, //!< lossy DCT based compression, in blocks of 32 scanlines. More efficient for partial buffer access. Supported since OpenEXR 2.2.0. |
136 | | IMWRITE_EXR_COMPRESSION_DWAB = 9, //!< lossy DCT based compression, in blocks of 256 scanlines. More efficient space wise and faster to decode full frames than DWAA_COMPRESSION. Supported since OpenEXR 2.2.0. |
137 | | }; |
138 | | |
139 | | //! Imwrite PNG specific flags used to tune the compression algorithm. |
140 | | /** These flags will be modify the way of PNG image compression and will be passed to the underlying zlib processing stage. |
141 | | |
142 | | - 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. |
143 | | - 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. |
144 | | - The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. |
145 | | - IMWRITE_PNG_STRATEGY_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications. |
146 | | */ |
147 | | enum ImwritePNGFlags { |
148 | | IMWRITE_PNG_STRATEGY_DEFAULT = 0, //!< Use this value for normal data. |
149 | | 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. |
150 | | IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY = 2, //!< Use this value to force Huffman encoding only (no string match). |
151 | | IMWRITE_PNG_STRATEGY_RLE = 3, //!< Use this value to limit match distances to one (run-length encoding). |
152 | | IMWRITE_PNG_STRATEGY_FIXED = 4 //!< Using this value prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications. |
153 | | }; |
154 | | |
155 | | //! Imwrite PAM specific tupletype flags used to define the 'TUPLETYPE' field of a PAM file. |
156 | | enum ImwritePAMFlags { |
157 | | IMWRITE_PAM_FORMAT_NULL = 0, |
158 | | IMWRITE_PAM_FORMAT_BLACKANDWHITE = 1, |
159 | | IMWRITE_PAM_FORMAT_GRAYSCALE = 2, |
160 | | IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA = 3, |
161 | | IMWRITE_PAM_FORMAT_RGB = 4, |
162 | | IMWRITE_PAM_FORMAT_RGB_ALPHA = 5 |
163 | | }; |
164 | | |
165 | | //! Imwrite HDR specific values for IMWRITE_HDR_COMPRESSION parameter key |
166 | | enum ImwriteHDRCompressionFlags { |
167 | | IMWRITE_HDR_COMPRESSION_NONE = 0, |
168 | | IMWRITE_HDR_COMPRESSION_RLE = 1 |
169 | | }; |
170 | | |
171 | | //! @} imgcodecs_flags |
172 | | |
173 | | /** @brief Loads an image from a file. |
174 | | |
175 | | @anchor imread |
176 | | |
177 | | The function imread loads an image from the specified file and returns it. If the image cannot be |
178 | | read (because of missing file, improper permissions, unsupported or invalid format), the function |
179 | | returns an empty matrix ( Mat::data==NULL ). |
180 | | |
181 | | Currently, the following file formats are supported: |
182 | | |
183 | | - Windows bitmaps - \*.bmp, \*.dib (always supported) |
184 | | - JPEG files - \*.jpeg, \*.jpg, \*.jpe (see the *Note* section) |
185 | | - JPEG 2000 files - \*.jp2 (see the *Note* section) |
186 | | - Portable Network Graphics - \*.png (see the *Note* section) |
187 | | - WebP - \*.webp (see the *Note* section) |
188 | | - Portable image format - \*.pbm, \*.pgm, \*.ppm \*.pxm, \*.pnm (always supported) |
189 | | - PFM files - \*.pfm (see the *Note* section) |
190 | | - Sun rasters - \*.sr, \*.ras (always supported) |
191 | | - TIFF files - \*.tiff, \*.tif (see the *Note* section) |
192 | | - OpenEXR Image files - \*.exr (see the *Note* section) |
193 | | - Radiance HDR - \*.hdr, \*.pic (always supported) |
194 | | - Raster and Vector geospatial data supported by GDAL (see the *Note* section) |
195 | | |
196 | | @note |
197 | | - The function determines the type of an image by the content, not by the file extension. |
198 | | - In the case of color images, the decoded images will have the channels stored in **B G R** order. |
199 | | - When using IMREAD_GRAYSCALE, the codec's internal grayscale conversion will be used, if available. |
200 | | Results may differ to the output of cvtColor() |
201 | | - On Microsoft Windows\* OS and MacOSX\*, the codecs shipped with an OpenCV image (libjpeg, |
202 | | libpng, libtiff, and libjasper) are used by default. So, OpenCV can always read JPEGs, PNGs, |
203 | | and TIFFs. On MacOSX, there is also an option to use native MacOSX image readers. But beware |
204 | | that currently these native image loaders give images with different pixel values because of |
205 | | the color management embedded into MacOSX. |
206 | | - On Linux\*, BSD flavors and other Unix-like open-source operating systems, OpenCV looks for |
207 | | codecs supplied with an OS image. Install the relevant packages (do not forget the development |
208 | | files, for example, "libjpeg-dev", in Debian\* and Ubuntu\*) to get the codec support or turn |
209 | | on the OPENCV_BUILD_3RDPARTY_LIBS flag in CMake. |
210 | | - In the case you set *WITH_GDAL* flag to true in CMake and @ref IMREAD_LOAD_GDAL to load the image, |
211 | | then the [GDAL](http://www.gdal.org) driver will be used in order to decode the image, supporting |
212 | | the following formats: [Raster](http://www.gdal.org/formats_list.html), |
213 | | [Vector](http://www.gdal.org/ogr_formats.html). |
214 | | - If EXIF information is embedded in the image file, the EXIF orientation will be taken into account |
215 | | and thus the image will be rotated accordingly except if the flags @ref IMREAD_IGNORE_ORIENTATION |
216 | | or @ref IMREAD_UNCHANGED are passed. |
217 | | - Use the IMREAD_UNCHANGED flag to keep the floating point values from PFM image. |
218 | | - By default number of pixels must be less than 2^30. Limit can be set using system |
219 | | variable OPENCV_IO_MAX_IMAGE_PIXELS |
220 | | |
221 | | @param filename Name of file to be loaded. |
222 | | @param flags Flag that can take values of cv::ImreadModes |
223 | | */ |
224 | | CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR ); |
225 | | |
226 | | /** @brief Loads a multi-page image from a file. |
227 | | |
228 | | The function imreadmulti loads a multi-page image from the specified file into a vector of Mat objects. |
229 | | @param filename Name of file to be loaded. |
230 | | @param mats A vector of Mat objects holding each page. |
231 | | @param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_ANYCOLOR. |
232 | | @sa cv::imread |
233 | | */ |
234 | | CV_EXPORTS_W bool imreadmulti(const String& filename, CV_OUT std::vector<Mat>& mats, int flags = IMREAD_ANYCOLOR); |
235 | | |
236 | | /** @brief Loads a of images of a multi-page image from a file. |
237 | | |
238 | | The function imreadmulti loads a specified range from a multi-page image from the specified file into a vector of Mat objects. |
239 | | @param filename Name of file to be loaded. |
240 | | @param mats A vector of Mat objects holding each page. |
241 | | @param start Start index of the image to load |
242 | | @param count Count number of images to load |
243 | | @param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_ANYCOLOR. |
244 | | @sa cv::imread |
245 | | */ |
246 | | CV_EXPORTS_W bool imreadmulti(const String& filename, CV_OUT std::vector<Mat>& mats, int start, int count, int flags = IMREAD_ANYCOLOR); |
247 | | |
248 | | /** @brief Returns the number of images inside the give file |
249 | | |
250 | | The function imcount will return the number of pages in a multi-page image, or 1 for single-page images |
251 | | @param filename Name of file to be loaded. |
252 | | @param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_ANYCOLOR. |
253 | | */ |
254 | | CV_EXPORTS_W size_t imcount(const String& filename, int flags = IMREAD_ANYCOLOR); |
255 | | |
256 | | /** @brief Saves an image to a specified file. |
257 | | |
258 | | The function imwrite saves the image to the specified file. The image format is chosen based on the |
259 | | filename extension (see cv::imread for the list of extensions). In general, only 8-bit unsigned (CV_8U) |
260 | | single-channel or 3-channel (with 'BGR' channel order) images |
261 | | can be saved using this function, with these exceptions: |
262 | | |
263 | | - With OpenEXR encoder, only 32-bit float (CV_32F) images can be saved. |
264 | | - 8-bit unsigned (CV_8U) images are not supported. |
265 | | - With Radiance HDR encoder, non 64-bit float (CV_64F) images can be saved. |
266 | | - All images will be converted to 32-bit float (CV_32F). |
267 | | - With JPEG 2000 encoder, 8-bit unsigned (CV_8U) and 16-bit unsigned (CV_16U) images can be saved. |
268 | | - With PAM encoder, 8-bit unsigned (CV_8U) and 16-bit unsigned (CV_16U) images can be saved. |
269 | | - With PNG encoder, 8-bit unsigned (CV_8U) and 16-bit unsigned (CV_16U) images can be saved. |
270 | | - PNG images with an alpha channel can be saved using this function. To do this, create |
271 | | 8-bit (or 16-bit) 4-channel image BGRA, where the alpha channel goes last. Fully transparent pixels |
272 | | should have alpha set to 0, fully opaque pixels should have alpha set to 255/65535 (see the code sample below). |
273 | | - With PGM/PPM encoder, 8-bit unsigned (CV_8U) and 16-bit unsigned (CV_16U) images can be saved. |
274 | | - With TIFF encoder, 8-bit unsigned (CV_8U), 16-bit unsigned (CV_16U), |
275 | | 32-bit float (CV_32F) and 64-bit float (CV_64F) images can be saved. |
276 | | - Multiple images (vector of Mat) can be saved in TIFF format (see the code sample below). |
277 | | - 32-bit float 3-channel (CV_32FC3) TIFF images will be saved |
278 | | using the LogLuv high dynamic range encoding (4 bytes per pixel) |
279 | | |
280 | | If the image format is not supported, the image will be converted to 8-bit unsigned (CV_8U) and saved that way. |
281 | | |
282 | | If the format, depth or channel order is different, use |
283 | | Mat::convertTo and cv::cvtColor to convert it before saving. Or, use the universal FileStorage I/O |
284 | | functions to save the image to XML or YAML format. |
285 | | |
286 | | The sample below shows how to create a BGRA image, how to set custom compression parameters and save it to a PNG file. |
287 | | It also demonstrates how to save multiple images in a TIFF file: |
288 | | @include snippets/imgcodecs_imwrite.cpp |
289 | | @param filename Name of the file. |
290 | | @param img (Mat or vector of Mat) Image or Images to be saved. |
291 | | @param params Format-specific parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) see cv::ImwriteFlags |
292 | | */ |
293 | | CV_EXPORTS_W bool imwrite( const String& filename, InputArray img, |
294 | | const std::vector<int>& params = std::vector<int>()); |
295 | | |
296 | | /// @overload multi-image overload for bindings |
297 | | CV_WRAP static inline |
298 | | bool imwritemulti(const String& filename, InputArrayOfArrays img, |
299 | | const std::vector<int>& params = std::vector<int>()) |
300 | 0 | { |
301 | 0 | return imwrite(filename, img, params); |
302 | 0 | } Unexecuted instantiation: core_fuzzer.cc:cv::imwritemulti(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&, std::__1::vector<int, std::__1::allocator<int> > const&) Unexecuted instantiation: filestorage_read_file_fuzzer.cc:cv::imwritemulti(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&, std::__1::vector<int, std::__1::allocator<int> > const&) Unexecuted instantiation: imdecode_fuzzer.cc:cv::imwritemulti(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&, std::__1::vector<int, std::__1::allocator<int> > const&) Unexecuted instantiation: filestorage_read_string_fuzzer.cc:cv::imwritemulti(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&, std::__1::vector<int, std::__1::allocator<int> > const&) Unexecuted instantiation: imencode_fuzzer.cc:cv::imwritemulti(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&, std::__1::vector<int, std::__1::allocator<int> > const&) Unexecuted instantiation: filestorage_read_filename_fuzzer.cc:cv::imwritemulti(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&, std::__1::vector<int, std::__1::allocator<int> > const&) Unexecuted instantiation: generateusergallerycollage_fuzzer.cc:cv::imwritemulti(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&, std::__1::vector<int, std::__1::allocator<int> > const&) Unexecuted instantiation: imread_fuzzer.cc:cv::imwritemulti(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&, std::__1::vector<int, std::__1::allocator<int> > const&) |
303 | | |
304 | | /** @brief Reads an image from a buffer in memory. |
305 | | |
306 | | The function imdecode reads an image from the specified buffer in the memory. If the buffer is too short or |
307 | | contains invalid data, the function returns an empty matrix ( Mat::data==NULL ). |
308 | | |
309 | | See cv::imread for the list of supported formats and flags description. |
310 | | |
311 | | @note In the case of color images, the decoded images will have the channels stored in **B G R** order. |
312 | | @param buf Input array or vector of bytes. |
313 | | @param flags The same flags as in cv::imread, see cv::ImreadModes. |
314 | | */ |
315 | | CV_EXPORTS_W Mat imdecode( InputArray buf, int flags ); |
316 | | |
317 | | /** @overload |
318 | | @param buf |
319 | | @param flags |
320 | | @param dst The optional output placeholder for the decoded matrix. It can save the image |
321 | | reallocations when the function is called repeatedly for images of the same size. |
322 | | */ |
323 | | CV_EXPORTS Mat imdecode( InputArray buf, int flags, Mat* dst); |
324 | | |
325 | | /** @brief Reads a multi-page image from a buffer in memory. |
326 | | |
327 | | The function imdecodemulti reads a multi-page image from the specified buffer in the memory. If the buffer is too short or |
328 | | contains invalid data, the function returns false. |
329 | | |
330 | | See cv::imreadmulti for the list of supported formats and flags description. |
331 | | |
332 | | @note In the case of color images, the decoded images will have the channels stored in **B G R** order. |
333 | | @param buf Input array or vector of bytes. |
334 | | @param flags The same flags as in cv::imread, see cv::ImreadModes. |
335 | | @param mats A vector of Mat objects holding each page, if more than one. |
336 | | */ |
337 | | CV_EXPORTS_W bool imdecodemulti(InputArray buf, int flags, CV_OUT std::vector<Mat>& mats); |
338 | | |
339 | | /** @brief Encodes an image into a memory buffer. |
340 | | |
341 | | The function imencode compresses the image and stores it in the memory buffer that is resized to fit the |
342 | | result. See cv::imwrite for the list of supported formats and flags description. |
343 | | |
344 | | @param ext File extension that defines the output format. Must include a leading period. |
345 | | @param img Image to be written. |
346 | | @param buf Output buffer resized to fit the compressed image. |
347 | | @param params Format-specific parameters. See cv::imwrite and cv::ImwriteFlags. |
348 | | */ |
349 | | CV_EXPORTS_W bool imencode( const String& ext, InputArray img, |
350 | | CV_OUT std::vector<uchar>& buf, |
351 | | const std::vector<int>& params = std::vector<int>()); |
352 | | |
353 | | /** @brief Returns true if the specified image can be decoded by OpenCV |
354 | | |
355 | | @param filename File name of the image |
356 | | */ |
357 | | CV_EXPORTS_W bool haveImageReader( const String& filename ); |
358 | | |
359 | | /** @brief Returns true if an image with the specified filename can be encoded by OpenCV |
360 | | |
361 | | @param filename File name of the image |
362 | | */ |
363 | | CV_EXPORTS_W bool haveImageWriter( const String& filename ); |
364 | | |
365 | | /** @brief To read Multi Page images on demand |
366 | | |
367 | | The ImageCollection class provides iterator API to read multi page images on demand. Create iterator |
368 | | to the collection of the images and iterate over the collection. Decode the necessary page with operator*. |
369 | | |
370 | | The performance of page decoding is O(1) if collection is increment sequentially. If the user wants to access random page, |
371 | | then the time Complexity is O(n) because the collection has to be reinitialized every time in order to go to the correct page. |
372 | | However, the intermediate pages are not decoded during the process, so typically it's quite fast. |
373 | | This is required because multipage codecs does not support going backwards. |
374 | | After decoding the one page, it is stored inside the collection cache. Hence, trying to get Mat object from already decoded page is O(1). |
375 | | If you need memory, you can use .releaseCache() method to release cached index. |
376 | | The space complexity is O(n) if all pages are decoded into memory. The user is able to decode and release images on demand. |
377 | | */ |
378 | | class CV_EXPORTS ImageCollection { |
379 | | public: |
380 | | struct CV_EXPORTS iterator { |
381 | | iterator(ImageCollection* col); |
382 | | iterator(ImageCollection* col, int end); |
383 | | Mat& operator*(); |
384 | | Mat* operator->(); |
385 | | iterator& operator++(); |
386 | | iterator operator++(int); |
387 | 0 | friend bool operator== (const iterator& a, const iterator& b) { return a.m_curr == b.m_curr; } |
388 | 0 | friend bool operator!= (const iterator& a, const iterator& b) { return a.m_curr != b.m_curr; } |
389 | | |
390 | | private: |
391 | | ImageCollection* m_pCollection; |
392 | | int m_curr; |
393 | | }; |
394 | | |
395 | | ImageCollection(); |
396 | | ImageCollection(const String& filename, int flags); |
397 | | void init(const String& img, int flags); |
398 | | size_t size() const; |
399 | | const Mat& at(int index); |
400 | | const Mat& operator[](int index); |
401 | | void releaseCache(int index); |
402 | | iterator begin(); |
403 | | iterator end(); |
404 | | |
405 | | class Impl; |
406 | | Ptr<Impl> getImpl(); |
407 | | protected: |
408 | | Ptr<Impl> pImpl; |
409 | | }; |
410 | | |
411 | | //! @} imgcodecs |
412 | | |
413 | | } // cv |
414 | | |
415 | | #endif //OPENCV_IMGCODECS_HPP |