/work/install-coverage/include/opencv4/opencv2/imgcodecs.hpp
Line | Count | Source |
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_flags Flags used for image file reading and writing |
52 | | @defgroup imgcodecs_ios iOS glue |
53 | | @defgroup imgcodecs_macosx MacOS(OSX) glue |
54 | | @} |
55 | | */ |
56 | | |
57 | | //////////////////////////////// image codec //////////////////////////////// |
58 | | namespace cv |
59 | | { |
60 | | |
61 | | //! @addtogroup imgcodecs |
62 | | //! @{ |
63 | | |
64 | | //! @addtogroup imgcodecs_flags |
65 | | //! @{ |
66 | | |
67 | | //! Imread flags |
68 | | //! @note IMREAD_COLOR_BGR (IMREAD_COLOR) and IMREAD_COLOR_RGB can not be set at the same time. |
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_BGR = 1, //!< If set, always convert image to the 3 channel BGR color image. |
73 | | IMREAD_COLOR = 1, //!< Same as IMREAD_COLOR_BGR. |
74 | | IMREAD_ANYDEPTH = 2, //!< If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit. |
75 | | IMREAD_ANYCOLOR = 4, //!< If set, the image is read in any possible color format. |
76 | | IMREAD_LOAD_GDAL = 8, //!< If set, use the gdal driver for loading the image. |
77 | | IMREAD_REDUCED_GRAYSCALE_2 = 16, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/2. |
78 | | IMREAD_REDUCED_COLOR_2 = 17, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/2. |
79 | | IMREAD_REDUCED_GRAYSCALE_4 = 32, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/4. |
80 | | IMREAD_REDUCED_COLOR_4 = 33, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/4. |
81 | | IMREAD_REDUCED_GRAYSCALE_8 = 64, //!< If set, always convert image to the single channel grayscale image and the image size reduced 1/8. |
82 | | IMREAD_REDUCED_COLOR_8 = 65, //!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/8. |
83 | | IMREAD_IGNORE_ORIENTATION = 128, //!< If set, do not rotate the image according to EXIF's orientation flag. |
84 | | IMREAD_COLOR_RGB = 256, //!< If set, always convert image to the 3 channel RGB color image. |
85 | | }; |
86 | | |
87 | | //! Imwrite flags |
88 | | enum ImwriteFlags { |
89 | | IMWRITE_JPEG_QUALITY = 1, //!< For JPEG, it can be a quality from 0 to 100 (the higher is the better). Default value is 95. |
90 | | IMWRITE_JPEG_PROGRESSIVE = 2, //!< Enable JPEG features, 0 or 1, default is False. |
91 | | IMWRITE_JPEG_OPTIMIZE = 3, //!< Enable JPEG features, 0 or 1, default is False. |
92 | | IMWRITE_JPEG_RST_INTERVAL = 4, //!< JPEG restart interval, 0 - 65535, default is 0 - no restart. |
93 | | IMWRITE_JPEG_LUMA_QUALITY = 5, //!< Separate luma quality level, 0 - 100, default is -1 - don't use. If JPEG_LIB_VERSION < 70, Not supported. |
94 | | IMWRITE_JPEG_CHROMA_QUALITY = 6, //!< Separate chroma quality level, 0 - 100, default is -1 - don't use. If JPEG_LIB_VERSION < 70, Not supported. |
95 | | IMWRITE_JPEG_SAMPLING_FACTOR = 7, //!< For JPEG, set sampling factor. See cv::ImwriteJPEGSamplingFactorParams. |
96 | | 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). |
97 | | IMWRITE_PNG_STRATEGY = 17, //!< For PNG, One of cv::ImwritePNGFlags, default is IMWRITE_PNG_STRATEGY_RLE. |
98 | | IMWRITE_PNG_BILEVEL = 18, //!< For PNG, Binary level PNG, 0 or 1, default is 0. For APNG, it is not supported. |
99 | | IMWRITE_PNG_FILTER = 19, //!< For PNG, One of cv::ImwritePNGFilterFlags, default is IMWRITE_PNG_FILTER_SUB. For APNG, it is not supported. |
100 | | IMWRITE_PNG_ZLIBBUFFER_SIZE = 20, //!< For PNG with libpng, sets the size of the internal zlib compression buffer in bytes, from 6 to 1048576(1024 KiB). Default is 8192(8 KiB). For normal use, 131072(128 KiB) or 262144(256 KiB) may be sufficient. If WITH_SPNG=ON, it is not supported. For APNG, it is not supported. |
101 | | IMWRITE_PXM_BINARY = 32, //!< For PPM, PGM, or PBM, it can be a binary format flag, 0 or 1. Default value is 1. |
102 | | IMWRITE_EXR_TYPE = (3 << 4) + 0 /* 48 */, //!< override EXR storage type (FLOAT (FP32) is default) |
103 | | IMWRITE_EXR_COMPRESSION = (3 << 4) + 1 /* 49 */, //!< override EXR compression type (ZIP_COMPRESSION = 3 is default) |
104 | | IMWRITE_EXR_DWA_COMPRESSION_LEVEL = (3 << 4) + 2 /* 50 */, //!< override EXR DWA compression level (45 is default) |
105 | | 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. |
106 | | IMWRITE_HDR_COMPRESSION = (5 << 4) + 0 /* 80 */, //!< specify HDR compression |
107 | | IMWRITE_PAM_TUPLETYPE = 128,//!< For PAM, sets the TUPLETYPE field to the corresponding string value that is defined for the format |
108 | | IMWRITE_TIFF_RESUNIT = 256,//!< For TIFF, use to specify which DPI resolution unit to set. See ImwriteTiffResolutionUnitFlags. Default is IMWRITE_TIFF_RESOLUTION_UNIT_INCH. |
109 | | IMWRITE_TIFF_XDPI = 257,//!< For TIFF, use to specify the X direction DPI |
110 | | IMWRITE_TIFF_YDPI = 258,//!< For TIFF, use to specify the Y direction DPI |
111 | | IMWRITE_TIFF_COMPRESSION = 259,//!< For TIFF, use to specify the image compression scheme. See cv::ImwriteTiffCompressionFlags. 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. |
112 | | IMWRITE_TIFF_ROWSPERSTRIP = 278,//!< For TIFF, use to specify the number of rows per strip. |
113 | | IMWRITE_TIFF_PREDICTOR = 317,//!< For TIFF, use to specify predictor. See cv::ImwriteTiffPredictorFlags. Default is IMWRITE_TIFF_PREDICTOR_HORIZONTAL . |
114 | | 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. |
115 | | IMWRITE_AVIF_QUALITY = 512,//!< For AVIF, it can be a quality between 0 and 100 (the higher the better). Default is 95. |
116 | | IMWRITE_AVIF_DEPTH = 513,//!< For AVIF, it can be 8, 10 or 12. If >8, it is stored/read as CV_32F. Default is 8. |
117 | | IMWRITE_AVIF_SPEED = 514,//!< For AVIF, it is between 0 (slowest) and 10(fastest). Default is 9. |
118 | | IMWRITE_JPEGXL_QUALITY = 640,//!< For JPEG XL, it can be a quality from 0 to 100 (the higher is the better). Default value is 95. If set, distance parameter is re-calicurated from quality level automatically. This parameter request libjxl v0.10 or later. |
119 | | IMWRITE_JPEGXL_EFFORT = 641,//!< For JPEG XL, encoder effort/speed level without affecting decoding speed; it is between 1 (fastest) and 10 (slowest). Default is 7. |
120 | | IMWRITE_JPEGXL_DISTANCE = 642,//!< For JPEG XL, distance level for lossy compression: target max butteraugli distance, lower = higher quality, 0 = lossless; range: 0 .. 25. Default is 1. |
121 | | IMWRITE_JPEGXL_DECODING_SPEED = 643,//!< For JPEG XL, decoding speed tier for the provided options; minimum is 0 (slowest to decode, best quality/density), and maximum is 4 (fastest to decode, at the cost of some quality/density). Default is 0. |
122 | | IMWRITE_BMP_COMPRESSION = 768, //!< For BMP, use to specify compress parameter for 32bpp image. Default is IMWRITE_BMP_COMPRESSION_BITFIELDS. See cv::ImwriteBMPCompressionFlags. |
123 | | IMWRITE_GIF_LOOP = 1024, //!< Not functional since 4.12.0. Replaced by cv::Animation::loop_count. |
124 | | IMWRITE_GIF_SPEED = 1025, //!< Not functional since 4.12.0. Replaced by cv::Animation::durations. |
125 | | IMWRITE_GIF_QUALITY = 1026, //!< For GIF, it can be a quality from 1 to 8. Default is 2. See cv::ImwriteGifCompressionFlags. |
126 | | IMWRITE_GIF_DITHER = 1027, //!< For GIF, it can be a quality from -1(most dither) to 3(no dither). Default is 0. |
127 | | IMWRITE_GIF_TRANSPARENCY = 1028, //!< For GIF, the alpha channel lower than this will be set to transparent. Default is 1. |
128 | | IMWRITE_GIF_COLORTABLE = 1029 //!< For GIF, 0 means global color table is used, 1 means local color table is used. Default is 0. |
129 | | }; |
130 | | |
131 | | enum ImwriteJPEGSamplingFactorParams { |
132 | | IMWRITE_JPEG_SAMPLING_FACTOR_411 = 0x411111, //!< 4x1,1x1,1x1 |
133 | | IMWRITE_JPEG_SAMPLING_FACTOR_420 = 0x221111, //!< 2x2,1x1,1x1(Default) |
134 | | IMWRITE_JPEG_SAMPLING_FACTOR_422 = 0x211111, //!< 2x1,1x1,1x1 |
135 | | IMWRITE_JPEG_SAMPLING_FACTOR_440 = 0x121111, //!< 1x2,1x1,1x1 |
136 | | IMWRITE_JPEG_SAMPLING_FACTOR_444 = 0x111111 //!< 1x1,1x1,1x1(No subsampling) |
137 | | }; |
138 | | |
139 | | enum ImwriteTiffCompressionFlags { |
140 | | IMWRITE_TIFF_COMPRESSION_NONE = 1, //!< dump mode |
141 | | IMWRITE_TIFF_COMPRESSION_CCITTRLE = 2, //!< CCITT modified Huffman RLE |
142 | | IMWRITE_TIFF_COMPRESSION_CCITTFAX3 = 3, //!< CCITT Group 3 fax encoding |
143 | | IMWRITE_TIFF_COMPRESSION_CCITT_T4 = 3, //!< CCITT T.4 (TIFF 6 name) |
144 | | IMWRITE_TIFF_COMPRESSION_CCITTFAX4 = 4, //!< CCITT Group 4 fax encoding |
145 | | IMWRITE_TIFF_COMPRESSION_CCITT_T6 = 4, //!< CCITT T.6 (TIFF 6 name) |
146 | | IMWRITE_TIFF_COMPRESSION_LZW = 5, //!< Lempel-Ziv & Welch |
147 | | IMWRITE_TIFF_COMPRESSION_OJPEG = 6, //!< !6.0 JPEG |
148 | | IMWRITE_TIFF_COMPRESSION_JPEG = 7, //!< %JPEG DCT compression |
149 | | IMWRITE_TIFF_COMPRESSION_T85 = 9, //!< !TIFF/FX T.85 JBIG compression |
150 | | IMWRITE_TIFF_COMPRESSION_T43 = 10, //!< !TIFF/FX T.43 colour by layered JBIG compression |
151 | | IMWRITE_TIFF_COMPRESSION_NEXT = 32766, //!< NeXT 2-bit RLE |
152 | | IMWRITE_TIFF_COMPRESSION_CCITTRLEW = 32771, //!< #1 w/ word alignment |
153 | | IMWRITE_TIFF_COMPRESSION_PACKBITS = 32773, //!< Macintosh RLE |
154 | | IMWRITE_TIFF_COMPRESSION_THUNDERSCAN = 32809, //!< ThunderScan RLE |
155 | | IMWRITE_TIFF_COMPRESSION_IT8CTPAD = 32895, //!< IT8 CT w/padding |
156 | | IMWRITE_TIFF_COMPRESSION_IT8LW = 32896, //!< IT8 Linework RLE |
157 | | IMWRITE_TIFF_COMPRESSION_IT8MP = 32897, //!< IT8 Monochrome picture |
158 | | IMWRITE_TIFF_COMPRESSION_IT8BL = 32898, //!< IT8 Binary line art |
159 | | IMWRITE_TIFF_COMPRESSION_PIXARFILM = 32908, //!< Pixar companded 10bit LZW |
160 | | IMWRITE_TIFF_COMPRESSION_PIXARLOG = 32909, //!< Pixar companded 11bit ZIP |
161 | | IMWRITE_TIFF_COMPRESSION_DEFLATE = 32946, //!< Deflate compression, legacy tag |
162 | | IMWRITE_TIFF_COMPRESSION_ADOBE_DEFLATE = 8, //!< Deflate compression, as recognized by Adobe |
163 | | IMWRITE_TIFF_COMPRESSION_DCS = 32947, //!< Kodak DCS encoding |
164 | | IMWRITE_TIFF_COMPRESSION_JBIG = 34661, //!< ISO JBIG |
165 | | IMWRITE_TIFF_COMPRESSION_SGILOG = 34676, //!< SGI Log Luminance RLE |
166 | | IMWRITE_TIFF_COMPRESSION_SGILOG24 = 34677, //!< SGI Log 24-bit packed |
167 | | IMWRITE_TIFF_COMPRESSION_JP2000 = 34712, //!< Leadtools JPEG2000 |
168 | | IMWRITE_TIFF_COMPRESSION_LERC = 34887, //!< ESRI Lerc codec: https://github.com/Esri/lerc |
169 | | IMWRITE_TIFF_COMPRESSION_LZMA = 34925, //!< LZMA2 |
170 | | IMWRITE_TIFF_COMPRESSION_ZSTD = 50000, //!< ZSTD: WARNING not registered in Adobe-maintained registry |
171 | | IMWRITE_TIFF_COMPRESSION_WEBP = 50001, //!< WEBP: WARNING not registered in Adobe-maintained registry |
172 | | IMWRITE_TIFF_COMPRESSION_JXL = 50002 //!< JPEGXL: WARNING not registered in Adobe-maintained registry |
173 | | }; |
174 | | |
175 | | enum ImwriteTiffPredictorFlags { |
176 | | IMWRITE_TIFF_PREDICTOR_NONE = 1, //!< no prediction scheme used |
177 | | IMWRITE_TIFF_PREDICTOR_HORIZONTAL = 2, //!< horizontal differencing |
178 | | IMWRITE_TIFF_PREDICTOR_FLOATINGPOINT = 3 //!< floating point predictor |
179 | | }; |
180 | | |
181 | | enum ImwriteTiffResolutionUnitFlags { |
182 | | IMWRITE_TIFF_RESOLUTION_UNIT_NONE = 1, //!< no absolute unit of measurement. |
183 | | IMWRITE_TIFF_RESOLUTION_UNIT_INCH = 2, //!< inch |
184 | | IMWRITE_TIFF_RESOLUTION_UNIT_CENTIMETER = 3, //!< centimeter |
185 | | }; |
186 | | |
187 | | enum ImwriteEXRTypeFlags { |
188 | | // IMWRITE_EXR_TYPE_UNIT = 0, // not supported |
189 | | IMWRITE_EXR_TYPE_HALF = 1, //!< store as HALF (FP16) |
190 | | IMWRITE_EXR_TYPE_FLOAT = 2 //!< store as FP32 (default) |
191 | | }; |
192 | | |
193 | | enum ImwriteEXRCompressionFlags { |
194 | | IMWRITE_EXR_COMPRESSION_NO = 0, //!< no compression |
195 | | IMWRITE_EXR_COMPRESSION_RLE = 1, //!< run length encoding |
196 | | IMWRITE_EXR_COMPRESSION_ZIPS = 2, //!< zlib compression, one scan line at a time |
197 | | IMWRITE_EXR_COMPRESSION_ZIP = 3, //!< zlib compression, in blocks of 16 scan lines |
198 | | IMWRITE_EXR_COMPRESSION_PIZ = 4, //!< piz-based wavelet compression |
199 | | IMWRITE_EXR_COMPRESSION_PXR24 = 5, //!< lossy 24-bit float compression |
200 | | IMWRITE_EXR_COMPRESSION_B44 = 6, //!< lossy 4-by-4 pixel block compression, fixed compression rate |
201 | | IMWRITE_EXR_COMPRESSION_B44A = 7, //!< lossy 4-by-4 pixel block compression, flat fields are compressed more |
202 | | 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. |
203 | | 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. |
204 | | }; |
205 | | |
206 | | //! Imwrite PNG specific flags used to tune the compression algorithm. |
207 | | /** These flags will be modify the way of PNG image compression and will be passed to the underlying zlib processing stage. |
208 | | |
209 | | - 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. |
210 | | - 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. |
211 | | - The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. |
212 | | - IMWRITE_PNG_STRATEGY_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications. |
213 | | */ |
214 | | enum ImwritePNGFlags { |
215 | | IMWRITE_PNG_STRATEGY_DEFAULT = 0, //!< Use this value for normal data. |
216 | | 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. |
217 | | IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY = 2, //!< Use this value to force Huffman encoding only (no string match). |
218 | | IMWRITE_PNG_STRATEGY_RLE = 3, //!< Use this value to limit match distances to one (run-length encoding). |
219 | | IMWRITE_PNG_STRATEGY_FIXED = 4 //!< Using this value prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications. |
220 | | }; |
221 | | |
222 | | //! Imwrite PNG specific values for IMWRITE_PNG_FILTER parameter key |
223 | | enum ImwritePNGFilterFlags { |
224 | | IMWRITE_PNG_FILTER_NONE = 8, //!< Applies no filter to the PNG image (useful when you want to save the raw pixel data without any compression filter). |
225 | | IMWRITE_PNG_FILTER_SUB = 16, //!< Applies the "sub" filter, which calculates the difference between the current byte and the previous byte in the row. |
226 | | IMWRITE_PNG_FILTER_UP = 32, //!< applies the "up" filter, which calculates the difference between the current byte and the corresponding byte directly above it. |
227 | | IMWRITE_PNG_FILTER_AVG = 64, //!< applies the "average" filter, which calculates the average of the byte to the left and the byte above. |
228 | | IMWRITE_PNG_FILTER_PAETH = 128, //!< applies the "Paeth" filter, a more complex filter that predicts the next pixel value based on neighboring pixels. |
229 | | IMWRITE_PNG_FAST_FILTERS = (IMWRITE_PNG_FILTER_NONE | IMWRITE_PNG_FILTER_SUB | IMWRITE_PNG_FILTER_UP), //!< This is a combination of IMWRITE_PNG_FILTER_NONE, IMWRITE_PNG_FILTER_SUB, and IMWRITE_PNG_FILTER_UP, typically used for faster compression. |
230 | | IMWRITE_PNG_ALL_FILTERS = (IMWRITE_PNG_FAST_FILTERS | IMWRITE_PNG_FILTER_AVG | IMWRITE_PNG_FILTER_PAETH) //!< This combines all available filters (NONE, SUB, UP, AVG, and PAETH), which will attempt to apply all of them for the best possible compression. |
231 | | }; |
232 | | |
233 | | //! Imwrite PAM specific tupletype flags used to define the 'TUPLETYPE' field of a PAM file. |
234 | | enum ImwritePAMFlags { |
235 | | IMWRITE_PAM_FORMAT_NULL = 0, |
236 | | IMWRITE_PAM_FORMAT_BLACKANDWHITE = 1, |
237 | | IMWRITE_PAM_FORMAT_GRAYSCALE = 2, |
238 | | IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA = 3, |
239 | | IMWRITE_PAM_FORMAT_RGB = 4, |
240 | | IMWRITE_PAM_FORMAT_RGB_ALPHA = 5 |
241 | | }; |
242 | | |
243 | | //! Imwrite HDR specific values for IMWRITE_HDR_COMPRESSION parameter key |
244 | | enum ImwriteHDRCompressionFlags { |
245 | | IMWRITE_HDR_COMPRESSION_NONE = 0, |
246 | | IMWRITE_HDR_COMPRESSION_RLE = 1 |
247 | | }; |
248 | | |
249 | | //! Imwrite BMP specific values for IMWRITE_BMP_COMPRESSION parameter key. |
250 | | enum ImwriteBMPCompressionFlags { |
251 | | IMWRITE_BMP_COMPRESSION_RGB = 0, //!< Use BI_RGB. OpenCV v4.12.0 or before supports to encode with this compression only. |
252 | | IMWRITE_BMP_COMPRESSION_BITFIELDS = 3, //!< Use BI_BITFIELDS. OpenCV v4.13.0 or later can support to encode with this compression. (only for 32 BPP images) |
253 | | }; |
254 | | |
255 | | //! Imwrite GIF specific values for IMWRITE_GIF_QUALITY parameter key, if larger than 3, then its related to the size of the color table. |
256 | | enum ImwriteGIFCompressionFlags { |
257 | | IMWRITE_GIF_FAST_NO_DITHER = 1, |
258 | | IMWRITE_GIF_FAST_FLOYD_DITHER = 2, |
259 | | IMWRITE_GIF_COLORTABLE_SIZE_8 = 3, |
260 | | IMWRITE_GIF_COLORTABLE_SIZE_16 = 4, |
261 | | IMWRITE_GIF_COLORTABLE_SIZE_32 = 5, |
262 | | IMWRITE_GIF_COLORTABLE_SIZE_64 = 6, |
263 | | IMWRITE_GIF_COLORTABLE_SIZE_128 = 7, |
264 | | IMWRITE_GIF_COLORTABLE_SIZE_256 = 8 |
265 | | }; |
266 | | |
267 | | enum ImageMetadataType |
268 | | { |
269 | | IMAGE_METADATA_UNKNOWN = -1, // Used when metadata type is unrecognized or not set |
270 | | |
271 | | IMAGE_METADATA_EXIF = 0, // EXIF metadata (e.g., camera info, GPS, orientation) |
272 | | IMAGE_METADATA_XMP = 1, // XMP metadata (eXtensible Metadata Platform - Adobe format) |
273 | | IMAGE_METADATA_ICCP = 2, // ICC Profile (color profile for color management) |
274 | | IMAGE_METADATA_CICP = 3, // cICP Profile (video signal type) |
275 | | |
276 | | IMAGE_METADATA_MAX = 3 // Highest valid index (usually used for bounds checking) |
277 | | }; |
278 | | |
279 | | //! @} imgcodecs_flags |
280 | | |
281 | | /** @brief Represents an animation with multiple frames. |
282 | | The `Animation` struct is designed to store and manage data for animated sequences such as those from animated formats (e.g., GIF, AVIF, APNG, WebP). |
283 | | It provides support for looping, background color settings, frame timing, and frame storage. |
284 | | */ |
285 | | struct CV_EXPORTS_W_SIMPLE Animation |
286 | | { |
287 | | //! Number of times the animation should loop. 0 means infinite looping. |
288 | | /*! @note At some file format, when N is set, whether it is displayed N or N+1 times depends on the implementation of the user application. This loop times behaviour has not been documented clearly. |
289 | | * - (GIF) See https://issues.chromium.org/issues/40459899 |
290 | | * And animated GIF with loop is extended with the Netscape Application Block(NAB), which it not a part of GIF89a specification. See https://en.wikipedia.org/wiki/GIF#Animated_GIF . |
291 | | * - (WebP) See https://issues.chromium.org/issues/41276895 |
292 | | */ |
293 | | CV_PROP_RW int loop_count; |
294 | | //! Background color of the animation in BGRA format. |
295 | | CV_PROP_RW Scalar bgcolor; |
296 | | //! Duration for each frame in milliseconds. |
297 | | /*! @note (GIF) Due to file format limitation |
298 | | * - Durations must be multiples of 10 milliseconds. Any provided value will be rounded down to the nearest 10ms (e.g., 88ms → 80ms). |
299 | | * - 0ms(or smaller than expected in user application) duration may cause undefined behavior, e.g. it is handled with default duration. |
300 | | * - Over 65535 * 10 milliseconds duration is not supported. |
301 | | */ |
302 | | CV_PROP_RW std::vector<int> durations; |
303 | | //! Vector of frames, where each Mat represents a single frame. |
304 | | CV_PROP_RW std::vector<Mat> frames; |
305 | | //! image that can be used for the format in addition to the animation or if animation is not supported in the reader (like in PNG). |
306 | | CV_PROP_RW Mat still_image; |
307 | | |
308 | | /** @brief Constructs an Animation object with optional loop count and background color. |
309 | | |
310 | | @param loopCount An integer representing the number of times the animation should loop: |
311 | | - `0` (default) indicates infinite looping, meaning the animation will replay continuously. |
312 | | - Positive values denote finite repeat counts, allowing the animation to play a limited number of times. |
313 | | - If a negative value or a value beyond the maximum of `0xffff` (65535) is provided, it is reset to `0` |
314 | | (infinite looping) to maintain valid bounds. |
315 | | |
316 | | @param bgColor A `Scalar` object representing the background color in BGR format: |
317 | | - Defaults to `Scalar()`, indicating an empty color (usually transparent if supported). |
318 | | - This background color provides a solid fill behind frames that have transparency, ensuring a consistent display appearance. |
319 | | */ |
320 | | CV_WRAP Animation(int loopCount = 0, Scalar bgColor = Scalar()); |
321 | | }; |
322 | | |
323 | | /** @brief Loads an image from a file. |
324 | | |
325 | | @anchor imread |
326 | | |
327 | | The `imread` function loads an image from the specified file and returns OpenCV matrix. If the image cannot be |
328 | | read (because of a missing file, improper permissions, or unsupported/invalid format), the function |
329 | | returns an empty matrix. |
330 | | |
331 | | Currently, the following file formats are supported: |
332 | | |
333 | | - Windows bitmaps - \*.bmp, \*.dib (always supported) |
334 | | - GIF files - \*.gif (always supported) |
335 | | - JPEG files - \*.jpeg, \*.jpg, \*.jpe (see the *Note* section) |
336 | | - JPEG 2000 files - \*.jp2 (see the *Note* section) |
337 | | - Portable Network Graphics - \*.png (see the *Note* section) |
338 | | - WebP - \*.webp (see the *Note* section) |
339 | | - AVIF - \*.avif (see the *Note* section) |
340 | | - Portable image format - \*.pbm, \*.pgm, \*.ppm, \*.pxm, \*.pnm (always supported) |
341 | | - PFM files - \*.pfm (see the *Note* section) |
342 | | - Sun rasters - \*.sr, \*.ras (always supported) |
343 | | - TIFF files - \*.tiff, \*.tif (see the *Note* section) |
344 | | - OpenEXR Image files - \*.exr (see the *Note* section) |
345 | | - Radiance HDR - \*.hdr, \*.pic (always supported) |
346 | | - Raster and Vector geospatial data supported by GDAL (see the *Note* section) |
347 | | |
348 | | @note |
349 | | - The function determines the type of an image by its content, not by the file extension. |
350 | | - In the case of color images, the decoded images will have the channels stored in **B G R** order. |
351 | | - When using IMREAD_GRAYSCALE, the codec's internal grayscale conversion will be used, if available. |
352 | | Results may differ from the output of cvtColor(). |
353 | | - On Microsoft Windows\* and Mac OS\*, the codecs shipped with OpenCV (libjpeg, libpng, libtiff, |
354 | | and libjasper) are used by default. So, OpenCV can always read JPEGs, PNGs, and TIFFs. On Mac OS, |
355 | | there is also an option to use native Mac OS image readers. However, beware that currently these |
356 | | native image loaders give images with different pixel values because of the color management embedded |
357 | | into Mac OS. |
358 | | - On Linux\*, BSD flavors, and other Unix-like open-source operating systems, OpenCV looks for |
359 | | codecs supplied with the OS. Ensure the relevant packages are installed (including development |
360 | | files, such as "libjpeg-dev" in Debian\* and Ubuntu\*) to get codec support, or turn |
361 | | on the OPENCV_BUILD_3RDPARTY_LIBS flag in CMake. |
362 | | - If the *WITH_GDAL* flag is set to true in CMake and @ref IMREAD_LOAD_GDAL is used to load the image, |
363 | | the [GDAL](http://www.gdal.org) driver will be used to decode the image, supporting |
364 | | [Raster](http://www.gdal.org/formats_list.html) and [Vector](http://www.gdal.org/ogr_formats.html) formats. |
365 | | - If EXIF information is embedded in the image file, the EXIF orientation will be taken into account, |
366 | | and thus the image will be rotated accordingly unless the flags @ref IMREAD_IGNORE_ORIENTATION |
367 | | or @ref IMREAD_UNCHANGED are passed. |
368 | | - Use the IMREAD_UNCHANGED flag to preserve the floating-point values from PFM images. |
369 | | - By default, the number of pixels must be less than 2^30. This limit can be changed by setting |
370 | | the environment variable `OPENCV_IO_MAX_IMAGE_PIXELS`. See @ref tutorial_env_reference. |
371 | | |
372 | | @param filename Name of the file to be loaded. |
373 | | @param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_COLOR_BGR. |
374 | | */ |
375 | | CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR_BGR ); |
376 | | |
377 | | /** @brief Loads an image from a file. |
378 | | |
379 | | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts and the return value. |
380 | | @param filename Name of file to be loaded. |
381 | | @param dst object in which the image will be loaded. |
382 | | @param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_COLOR_BGR. |
383 | | @note |
384 | | The image passing through the img parameter can be pre-allocated. The memory is reused if the shape and the type match with the load image. |
385 | | */ |
386 | | CV_EXPORTS_W void imread( const String& filename, OutputArray dst, int flags = IMREAD_COLOR_BGR ); |
387 | | |
388 | | /** @brief Reads an image from a file along with associated metadata. |
389 | | |
390 | | This function behaves similarly to cv::imread(), loading an image from the specified file. |
391 | | In addition to the image pixel data, it also attempts to extract any available metadata |
392 | | embedded in the file (such as EXIF, XMP, etc.), depending on file format support. |
393 | | |
394 | | @note In the case of color images, the decoded images will have the channels stored in **B G R** order. |
395 | | @param filename Name of the file to be loaded. |
396 | | @param metadataTypes Output vector with types of metadata chunks returned in metadata, see ImageMetadataType. |
397 | | @param metadata Output vector of vectors or vector of matrices to store the retrieved metadata. |
398 | | @param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_ANYCOLOR. |
399 | | |
400 | | @return The loaded image as a cv::Mat object. If the image cannot be read, the function returns an empty matrix. |
401 | | */ |
402 | | CV_EXPORTS_W Mat imreadWithMetadata( const String& filename, CV_OUT std::vector<int>& metadataTypes, |
403 | | OutputArrayOfArrays metadata, int flags = IMREAD_ANYCOLOR); |
404 | | |
405 | | /** @brief Loads a multi-page image from a file. |
406 | | |
407 | | The function imreadmulti loads a multi-page image from the specified file into a vector of Mat objects. |
408 | | @param filename Name of file to be loaded. |
409 | | @param mats A vector of Mat objects holding each page. |
410 | | @param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_ANYCOLOR. |
411 | | @sa cv::imread |
412 | | */ |
413 | | CV_EXPORTS_W bool imreadmulti(const String& filename, CV_OUT std::vector<Mat>& mats, int flags = IMREAD_ANYCOLOR); |
414 | | |
415 | | /** @brief Loads images of a multi-page image from a file. |
416 | | |
417 | | The function imreadmulti loads a specified range from a multi-page image from the specified file into a vector of Mat objects. |
418 | | @param filename Name of file to be loaded. |
419 | | @param mats A vector of Mat objects holding each page. |
420 | | @param start Start index of the image to load |
421 | | @param count Count number of images to load |
422 | | @param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_ANYCOLOR. |
423 | | @sa cv::imread |
424 | | */ |
425 | | CV_EXPORTS_W bool imreadmulti(const String& filename, CV_OUT std::vector<Mat>& mats, int start, int count, int flags = IMREAD_ANYCOLOR); |
426 | | |
427 | | /** @example samples/cpp/tutorial_code/imgcodecs/animations.cpp |
428 | | An example to show usage of cv::imreadanimation and cv::imwriteanimation functions. |
429 | | Check @ref tutorial_animations "the corresponding tutorial" for more details |
430 | | */ |
431 | | |
432 | | /** @brief Loads frames from an animated image file into an Animation structure. |
433 | | |
434 | | The function imreadanimation loads frames from an animated image file (e.g., GIF, AVIF, APNG, WEBP) into the provided Animation struct. |
435 | | |
436 | | @param filename A string containing the path to the file. |
437 | | @param animation A reference to an Animation structure where the loaded frames will be stored. It should be initialized before the function is called. |
438 | | @param start The index of the first frame to load. This is optional and defaults to 0. |
439 | | @param count The number of frames to load. This is optional and defaults to 32767. |
440 | | |
441 | | @return Returns true if the file was successfully loaded and frames were extracted; returns false otherwise. |
442 | | */ |
443 | | CV_EXPORTS_W bool imreadanimation(const String& filename, CV_OUT Animation& animation, int start = 0, int count = INT16_MAX); |
444 | | |
445 | | /** @brief Loads frames from an animated image buffer into an Animation structure. |
446 | | |
447 | | The function imdecodeanimation loads frames from an animated image buffer (e.g., GIF, AVIF, APNG, WEBP) into the provided Animation struct. |
448 | | |
449 | | @param buf A reference to an InputArray containing the image buffer. |
450 | | @param animation A reference to an Animation structure where the loaded frames will be stored. It should be initialized before the function is called. |
451 | | @param start The index of the first frame to load. This is optional and defaults to 0. |
452 | | @param count The number of frames to load. This is optional and defaults to 32767. |
453 | | |
454 | | @return Returns true if the buffer was successfully loaded and frames were extracted; returns false otherwise. |
455 | | */ |
456 | | CV_EXPORTS_W bool imdecodeanimation(InputArray buf, CV_OUT Animation& animation, int start = 0, int count = INT16_MAX); |
457 | | |
458 | | /** @brief Saves an Animation to a specified file. |
459 | | |
460 | | The function imwriteanimation saves the provided Animation data to the specified file in an animated format. |
461 | | Supported formats depend on the implementation and may include formats like GIF, AVIF, APNG, or WEBP. |
462 | | |
463 | | @param filename The name of the file where the animation will be saved. The file extension determines the format. |
464 | | @param animation A constant reference to an Animation struct containing the frames and metadata to be saved. |
465 | | @param params Optional format-specific parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ...). |
466 | | These parameters are used to specify additional options for the encoding process. Refer to `cv::ImwriteFlags` for details on possible parameters. |
467 | | |
468 | | @return Returns true if the animation was successfully saved; returns false otherwise. |
469 | | */ |
470 | | CV_EXPORTS_W bool imwriteanimation(const String& filename, const Animation& animation, const std::vector<int>& params = std::vector<int>()); |
471 | | |
472 | | /** @brief Encodes an Animation to a memory buffer. |
473 | | |
474 | | The function imencodeanimation encodes the provided Animation data into a memory |
475 | | buffer in an animated format. Supported formats depend on the implementation and |
476 | | may include formats like GIF, AVIF, APNG, or WEBP. |
477 | | |
478 | | @param ext The file extension that determines the format of the encoded data. |
479 | | @param animation A constant reference to an Animation struct containing the |
480 | | frames and metadata to be encoded. |
481 | | @param buf A reference to a vector of unsigned chars where the encoded data will |
482 | | be stored. |
483 | | @param params Optional format-specific parameters encoded as pairs (paramId_1, |
484 | | paramValue_1, paramId_2, paramValue_2, ...). These parameters are used to |
485 | | specify additional options for the encoding process. Refer to `cv::ImwriteFlags` |
486 | | for details on possible parameters. |
487 | | |
488 | | @return Returns true if the animation was successfully encoded; returns false otherwise. |
489 | | */ |
490 | | CV_EXPORTS_W bool imencodeanimation(const String& ext, const Animation& animation, CV_OUT std::vector<uchar>& buf, const std::vector<int>& params = std::vector<int>()); |
491 | | |
492 | | /** @brief Returns the number of images inside the given file |
493 | | |
494 | | The function imcount returns the number of pages in a multi-page image (e.g. TIFF), the number of frames in an animation (e.g. AVIF), and 1 otherwise. |
495 | | If the image cannot be decoded, 0 is returned. |
496 | | @param filename Name of file to be loaded. |
497 | | @param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_ANYCOLOR. |
498 | | @todo when cv::IMREAD_LOAD_GDAL flag used the return value will be 0 or 1 because OpenCV's GDAL decoder doesn't support multi-page reading yet. |
499 | | */ |
500 | | CV_EXPORTS_W size_t imcount(const String& filename, int flags = IMREAD_ANYCOLOR); |
501 | | |
502 | | /** @brief Saves an image to a specified file. |
503 | | |
504 | | The function imwrite saves the image to the specified file. The image format is chosen based on the |
505 | | filename extension (see cv::imread for the list of extensions). In general, only 8-bit unsigned (CV_8U) |
506 | | single-channel or 3-channel (with 'BGR' channel order) images |
507 | | can be saved using this function, with these exceptions: |
508 | | |
509 | | - With BMP encoder, 8-bit unsigned (CV_8U) images can be saved. |
510 | | - BMP images with an alpha channel can be saved using this function. |
511 | | To achieve this, create an 8-bit 4-channel (CV_8UC4) BGRA image, ensuring the alpha channel is the last component. |
512 | | Fully transparent pixels should have an alpha value of 0, while fully opaque pixels should have an alpha value of 255. |
513 | | OpenCV v4.13.0 or later use BI_BITFIELDS compression as default. See IMWRITE_BMP_COMPRESSION. |
514 | | - With OpenEXR encoder, only 32-bit float (CV_32F) images can be saved. More than 4 channels can be saved. (imread can load it then.) |
515 | | - 8-bit unsigned (CV_8U) images are not supported. |
516 | | - With Radiance HDR encoder, non 64-bit float (CV_64F) images can be saved. |
517 | | - All images will be converted to 32-bit float (CV_32F). |
518 | | - With JPEG 2000 encoder, 8-bit unsigned (CV_8U) and 16-bit unsigned (CV_16U) images can be saved. |
519 | | - With JPEG XL encoder, 8-bit unsigned (CV_8U), 16-bit unsigned (CV_16U) and 32-bit float(CV_32F) images can be saved. |
520 | | - JPEG XL images with an alpha channel can be saved using this function. |
521 | | To achieve this, create an 8-bit 4-channel (CV_8UC4) / 16-bit 4-channel (CV_16UC4) / 32-bit float 4-channel (CV_32FC4) BGRA image, ensuring the alpha channel is the last component. |
522 | | Fully transparent pixels should have an alpha value of 0, while fully opaque pixels should have an alpha value of 255/65535/1.0. |
523 | | - With PAM encoder, 8-bit unsigned (CV_8U) and 16-bit unsigned (CV_16U) images can be saved. |
524 | | - With PNG encoder, 8-bit unsigned (CV_8U) and 16-bit unsigned (CV_16U) images can be saved. |
525 | | - PNG images with an alpha channel can be saved using this function. |
526 | | To achieve this, create an 8-bit 4-channel (CV_8UC4) / 16-bit 4-channel (CV_16UC4) BGRA image, ensuring the alpha channel is the last component. |
527 | | Fully transparent pixels should have an alpha value of 0, while fully opaque pixels should have an alpha value of 255/65535(see the code sample below). |
528 | | - With PGM/PPM encoder, 8-bit unsigned (CV_8U) and 16-bit unsigned (CV_16U) images can be saved. |
529 | | - With TIFF encoder, 8-bit unsigned (CV_8U), 8-bit signed (CV_8S), |
530 | | 16-bit unsigned (CV_16U), 16-bit signed (CV_16S), |
531 | | 32-bit signed (CV_32S), |
532 | | 32-bit float (CV_32F) and 64-bit float (CV_64F) images can be saved. |
533 | | - Multiple images (vector of Mat) can be saved in TIFF format (see the code sample below). |
534 | | - 32-bit float 3-channel (CV_32FC3) TIFF images will be saved |
535 | | using the LogLuv high dynamic range encoding (4 bytes per pixel) |
536 | | - With GIF encoder, 8-bit unsigned (CV_8U) images can be saved. |
537 | | - GIF images with an alpha channel can be saved using this function. |
538 | | To achieve this, create an 8-bit 4-channel (CV_8UC4) BGRA image, ensuring the alpha channel is the last component. |
539 | | Fully transparent pixels should have an alpha value of 0, while fully opaque pixels should have an alpha value of 255. |
540 | | - 8-bit single-channel images (CV_8UC1) are not supported due to GIF's limitation to indexed color formats. |
541 | | |
542 | | If the image format is not supported, the image will be converted to 8-bit unsigned (CV_8U) and saved that way. |
543 | | |
544 | | If the format, depth or channel order is different, use |
545 | | Mat::convertTo and cv::cvtColor to convert it before saving. Or, use the universal FileStorage I/O |
546 | | functions to save the image to XML or YAML format. |
547 | | |
548 | | The sample below shows how to create a BGRA image, how to set custom compression parameters and save it to a PNG file. |
549 | | It also demonstrates how to save multiple images in a TIFF file: |
550 | | @include snippets/imgcodecs_imwrite.cpp |
551 | | @param filename Name of the file. |
552 | | @param img (Mat or vector of Mat) Image or Images to be saved. |
553 | | @param params Format-specific parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) see cv::ImwriteFlags |
554 | | */ |
555 | | CV_EXPORTS_W bool imwrite( const String& filename, InputArray img, |
556 | | const std::vector<int>& params = std::vector<int>()); |
557 | | |
558 | | /** @brief Saves an image to a specified file with metadata |
559 | | |
560 | | The function imwriteWithMetadata saves the image to the specified file. It does the same thing as imwrite, but additionally writes metadata if the corresponding format supports it. |
561 | | @param filename Name of the file. As with imwrite, image format is determined by the file extension. |
562 | | @param img (Mat or vector of Mat) Image or Images to be saved. |
563 | | @param metadataTypes Vector with types of metadata chucks stored in metadata to write, see ImageMetadataType. |
564 | | @param metadata Vector of vectors or vector of matrices with chunks of metadata to store into the file |
565 | | @param params Format-specific parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) see cv::ImwriteFlags |
566 | | */ |
567 | | CV_EXPORTS_W bool imwriteWithMetadata( const String& filename, InputArray img, |
568 | | const std::vector<int>& metadataTypes, |
569 | | InputArrayOfArrays& metadata, |
570 | | const std::vector<int>& params = std::vector<int>()); |
571 | | |
572 | | //! @brief multi-image overload for bindings |
573 | | CV_WRAP static inline |
574 | | bool imwritemulti(const String& filename, InputArrayOfArrays img, |
575 | | const std::vector<int>& params = std::vector<int>()) |
576 | 0 | { |
577 | 0 | return imwrite(filename, img, params); |
578 | 0 | } 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&) 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: 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: 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: 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&) |
579 | | |
580 | | /** @brief Reads an image from a buffer in memory. |
581 | | |
582 | | The function imdecode reads an image from the specified buffer in the memory. If the buffer is too short or |
583 | | contains invalid data, the function returns an empty matrix ( Mat::data==NULL ). |
584 | | |
585 | | See cv::imread for the list of supported formats and flags description. |
586 | | |
587 | | @note In the case of color images, the decoded images will have the channels stored in **B G R** order. |
588 | | @param buf Input array or vector of bytes. |
589 | | @param flags Flag that can take values of cv::ImreadModes. |
590 | | */ |
591 | | CV_EXPORTS_W Mat imdecode( InputArray buf, int flags ); |
592 | | |
593 | | /** @brief Reads an image from a memory buffer and extracts associated metadata. |
594 | | |
595 | | This function decodes an image from the specified memory buffer. If the buffer is too short or |
596 | | contains invalid data, the function returns an empty matrix ( Mat::data==NULL ). |
597 | | |
598 | | See cv::imread for the list of supported formats and flags description. |
599 | | |
600 | | @note In the case of color images, the decoded images will have the channels stored in **B G R** order. |
601 | | @param buf Input array or vector of bytes containing the encoded image data. |
602 | | @param metadataTypes Output vector with types of metadata chucks returned in metadata, see cv::ImageMetadataType |
603 | | @param metadata Output vector of vectors or vector of matrices to store the retrieved metadata |
604 | | @param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_ANYCOLOR. |
605 | | |
606 | | @return The decoded image as a cv::Mat object. If decoding fails, the function returns an empty matrix. |
607 | | */ |
608 | | CV_EXPORTS_W Mat imdecodeWithMetadata( InputArray buf, CV_OUT std::vector<int>& metadataTypes, |
609 | | OutputArrayOfArrays metadata, int flags = IMREAD_ANYCOLOR ); |
610 | | |
611 | | /** @overload |
612 | | @param buf Input array or vector of bytes. |
613 | | @param flags Flag that can take values of cv::ImreadModes, default with cv::IMREAD_ANYCOLOR. |
614 | | @param dst The optional output placeholder for the decoded matrix. It can save the image |
615 | | reallocations when the function is called repeatedly for images of the same size. In case of decoder |
616 | | failure the function returns empty cv::Mat object, but does not release user-provided dst buffer. |
617 | | */ |
618 | | CV_EXPORTS Mat imdecode( InputArray buf, int flags, Mat* dst); |
619 | | |
620 | | /** @brief Reads a multi-page image from a buffer in memory. |
621 | | |
622 | | The function imdecodemulti reads a multi-page image from the specified buffer in the memory. If the buffer is too short or |
623 | | contains invalid data, the function returns false. |
624 | | |
625 | | See cv::imreadmulti for the list of supported formats and flags description. |
626 | | |
627 | | @note In the case of color images, the decoded images will have the channels stored in **B G R** order. |
628 | | @param buf Input array or vector of bytes. |
629 | | @param flags Flag that can take values of cv::ImreadModes. |
630 | | @param mats A vector of Mat objects holding each page, if more than one. |
631 | | @param range A continuous selection of pages. |
632 | | */ |
633 | | CV_EXPORTS_W bool imdecodemulti(InputArray buf, int flags, CV_OUT std::vector<Mat>& mats, const cv::Range& range = Range::all()); |
634 | | |
635 | | /** @brief Encodes an image into a memory buffer. |
636 | | |
637 | | The function imencode compresses the image and stores it in the memory buffer that is resized to fit the |
638 | | result. See cv::imwrite for the list of supported formats and flags description. |
639 | | |
640 | | @param ext File extension that defines the output format. Must include a leading period. |
641 | | @param img Image to be compressed. |
642 | | @param buf Output buffer resized to fit the compressed image. |
643 | | @param params Format-specific parameters. See cv::imwrite and cv::ImwriteFlags. |
644 | | */ |
645 | | CV_EXPORTS_W bool imencode( const String& ext, InputArray img, |
646 | | CV_OUT std::vector<uchar>& buf, |
647 | | const std::vector<int>& params = std::vector<int>()); |
648 | | |
649 | | /** @brief Encodes an image into a memory buffer. |
650 | | |
651 | | The function imencode compresses the image and stores it in the memory buffer that is resized to fit the |
652 | | result. See cv::imwrite for the list of supported formats and flags description. |
653 | | |
654 | | @param ext File extension that defines the output format. Must include a leading period. |
655 | | @param img Image to be compressed. |
656 | | @param metadataTypes Vector with types of metadata chucks stored in metadata to write, see ImageMetadataType. |
657 | | @param metadata Vector of vectors or vector of matrices with chunks of metadata to store into the file |
658 | | @param buf Output buffer resized to fit the compressed image. |
659 | | @param params Format-specific parameters. See cv::imwrite and cv::ImwriteFlags. |
660 | | */ |
661 | | CV_EXPORTS_W bool imencodeWithMetadata( const String& ext, InputArray img, |
662 | | const std::vector<int>& metadataTypes, |
663 | | InputArrayOfArrays metadata, |
664 | | CV_OUT std::vector<uchar>& buf, |
665 | | const std::vector<int>& params = std::vector<int>()); |
666 | | |
667 | | /** @brief Encodes array of images into a memory buffer. |
668 | | |
669 | | The function is analog to cv::imencode for in-memory multi-page image compression. |
670 | | See cv::imwrite for the list of supported formats and flags description. |
671 | | |
672 | | @param ext File extension that defines the output format. Must include a leading period. |
673 | | @param imgs Vector of images to be written. |
674 | | @param buf Output buffer resized to fit the compressed data. |
675 | | @param params Format-specific parameters. See cv::imwrite and cv::ImwriteFlags. |
676 | | */ |
677 | | CV_EXPORTS_W bool imencodemulti( const String& ext, InputArrayOfArrays imgs, |
678 | | CV_OUT std::vector<uchar>& buf, |
679 | | const std::vector<int>& params = std::vector<int>()); |
680 | | |
681 | | /** @brief Checks if the specified image file can be decoded by OpenCV. |
682 | | |
683 | | The function haveImageReader checks if OpenCV is capable of reading the specified file. |
684 | | This can be useful for verifying support for a given image format before attempting to load an image. |
685 | | |
686 | | @param filename The name of the file to be checked. |
687 | | @return true if an image reader for the specified file is available and the file can be opened, false otherwise. |
688 | | |
689 | | @note The function checks the availability of image codecs that are either built into OpenCV or dynamically loaded. |
690 | | It does not load the image codec implementation and decode data, but uses signature check. |
691 | | If the file cannot be opened or the format is unsupported, the function will return false. |
692 | | |
693 | | @sa cv::haveImageWriter, cv::imread, cv::imdecode |
694 | | */ |
695 | | CV_EXPORTS_W bool haveImageReader( const String& filename ); |
696 | | |
697 | | /** @brief Checks if the specified image file or specified file extension can be encoded by OpenCV. |
698 | | |
699 | | The function haveImageWriter checks if OpenCV is capable of writing images with the specified file extension. |
700 | | This can be useful for verifying support for a given image format before attempting to save an image. |
701 | | |
702 | | @param filename The name of the file or the file extension (e.g., ".jpg", ".png"). |
703 | | It is recommended to provide the file extension rather than the full file name. |
704 | | @return true if an image writer for the specified extension is available, false otherwise. |
705 | | |
706 | | @note The function checks the availability of image codecs that are either built into OpenCV or dynamically loaded. |
707 | | It does not check for the actual existence of the file but rather the ability to write files of the given type. |
708 | | |
709 | | @sa cv::haveImageReader, cv::imwrite, cv::imencode |
710 | | */ |
711 | | CV_EXPORTS_W bool haveImageWriter( const String& filename ); |
712 | | |
713 | | /** @brief To read multi-page images on demand |
714 | | |
715 | | The ImageCollection class provides iterator API to read multi-page images on demand. Create iterator |
716 | | to the collection of the images and iterate over the collection. Decode the necessary page with operator*. |
717 | | |
718 | | The performance of page decoding is O(1) if collection is increment sequentially. If the user wants to access random page, |
719 | | then the time Complexity is O(n) because the collection has to be reinitialized every time in order to go to the correct page. |
720 | | However, the intermediate pages are not decoded during the process, so typically it's quite fast. |
721 | | This is required because multi-page codecs does not support going backwards. |
722 | | 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). |
723 | | If you need memory, you can use .releaseCache() method to release cached index. |
724 | | The space complexity is O(n) if all pages are decoded into memory. The user is able to decode and release images on demand. |
725 | | */ |
726 | | class CV_EXPORTS ImageCollection { |
727 | | public: |
728 | | struct CV_EXPORTS iterator { |
729 | | iterator(ImageCollection* col); |
730 | | iterator(ImageCollection* col, int end); |
731 | | Mat& operator*(); |
732 | | Mat* operator->(); |
733 | | iterator& operator++(); |
734 | | iterator operator++(int); |
735 | 0 | friend bool operator== (const iterator& a, const iterator& b) { return a.m_curr == b.m_curr; } |
736 | 0 | friend bool operator!= (const iterator& a, const iterator& b) { return a.m_curr != b.m_curr; } |
737 | | |
738 | | private: |
739 | | ImageCollection* m_pCollection; |
740 | | int m_curr; |
741 | | }; |
742 | | |
743 | | ImageCollection(); |
744 | | ImageCollection(const String& filename, int flags); |
745 | | void init(const String& img, int flags); |
746 | | size_t size() const; |
747 | | const Mat& at(int index); |
748 | | const Mat& operator[](int index); |
749 | | void releaseCache(int index); |
750 | | iterator begin(); |
751 | | iterator end(); |
752 | | |
753 | | class Impl; |
754 | | Ptr<Impl> getImpl(); |
755 | | protected: |
756 | | Ptr<Impl> pImpl; |
757 | | }; |
758 | | |
759 | | //! @} imgcodecs |
760 | | |
761 | | } // cv |
762 | | |
763 | | #endif //OPENCV_IMGCODECS_HPP |