Visual Servoing Platform  version 3.6.1 under development (2024-05-18)
vpImageIoBackend.h
1 /*
2  * ViSP, open source Visual Servoing Platform software.
3  * Copyright (C) 2005 - 2023 by Inria. All rights reserved.
4  *
5  * This software is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  * See the file LICENSE.txt at the root directory of this source
10  * distribution for additional information about the GNU GPL.
11  *
12  * For using ViSP with software that can not be combined with the GNU
13  * GPL, please contact Inria about acquiring a ViSP Professional
14  * Edition License.
15  *
16  * See https://visp.inria.fr for more information.
17  *
18  * This software was developed at:
19  * Inria Rennes - Bretagne Atlantique
20  * Campus Universitaire de Beaulieu
21  * 35042 Rennes Cedex
22  * France
23  *
24  * If you have questions regarding the use of this file, please contact
25  * Inria at visp@inria.fr
26  *
27  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29  *
30  * Description:
31  * Backend functions implementation for image I/O operations.
32  */
33 
39 #ifndef _vpImageIoBackend_h_
40 #define _vpImageIoBackend_h_
41 
42 #include <visp3/core/vpImage.h>
43 
44 // Portable FloatMap format (PFM)
45 // Portable Graymap format (PGM)
46 // Portable Pixmap format (PPM)
47 void vp_writePFM(const vpImage<float> &I, const std::string &filename);
48 void vp_writePFM_HDR(const vpImage<float> &I, const std::string &filename);
49 void vp_writePFM_HDR(const vpImage<vpRGBf> &I, const std::string &filename);
50 void vp_writePGM(const vpImage<unsigned char> &I, const std::string &filename);
51 void vp_writePGM(const vpImage<short> &I, const std::string &filename);
52 void vp_writePGM(const vpImage<vpRGBa> &I, const std::string &filename);
53 void vp_readPFM(vpImage<float> &I, const std::string &filename);
54 void vp_readPFM_HDR(vpImage<float> &I, const std::string &filename);
55 void vp_readPFM_HDR(vpImage<vpRGBf> &I, const std::string &filename);
56 void vp_readPGM(vpImage<unsigned char> &I, const std::string &filename);
57 void vp_readPGM(vpImage<vpRGBa> &I, const std::string &filename);
58 void vp_readPPM(vpImage<unsigned char> &I, const std::string &filename);
59 void vp_readPPM(vpImage<vpRGBa> &I, const std::string &filename);
60 void vp_writePPM(const vpImage<unsigned char> &I, const std::string &filename);
61 void vp_writePPM(const vpImage<vpRGBa> &I, const std::string &filename);
62 
63 // libjpeg
64 void readJPEGLibjpeg(vpImage<unsigned char> &I, const std::string &filename);
65 void readJPEGLibjpeg(vpImage<vpRGBa> &I, const std::string &filename);
66 
67 void writeJPEGLibjpeg(const vpImage<unsigned char> &I, const std::string &filename, int quality);
68 void writeJPEGLibjpeg(const vpImage<vpRGBa> &I, const std::string &filename, int quality);
69 
70 // libpng
71 void readPNGLibpng(vpImage<unsigned char> &I, const std::string &filename);
72 void readPNGLibpng(vpImage<vpRGBa> &I, const std::string &filename);
73 
74 void writePNGLibpng(const vpImage<unsigned char> &I, const std::string &filename);
75 void writePNGLibpng(const vpImage<vpRGBa> &I, const std::string &filename);
76 
77 #if ((VISP_HAVE_OPENCV_VERSION >= 0x030000) && defined(HAVE_OPENCV_IMGCODECS)) || ((VISP_HAVE_OPENCV_VERSION < 0x030000) \
78  && defined(HAVE_OPENCV_HIGHGUI) && defined(HAVE_OPENCV_IMGPROC))
79 // OpenCV
80 void readOpenCV(vpImage<unsigned char> &I, const std::string &filename);
81 void readOpenCV(vpImage<vpRGBa> &I, const std::string &filename);
82 void readOpenCV(vpImage<float> &I, const std::string &filename);
83 void readOpenCV(vpImage<vpRGBf> &I, const std::string &filename);
84 
85 void writeOpenCV(const vpImage<unsigned char> &I, const std::string &filename, int quality);
86 void writeOpenCV(const vpImage<vpRGBa> &I, const std::string &filename, int quality);
87 void writeOpenCV(const vpImage<float> &I, const std::string &filename);
88 void writeOpenCV(const vpImage<vpRGBf> &I, const std::string &filename);
89 
90 void readPNGfromMemOpenCV(const std::vector<unsigned char> &buffer, vpImage<unsigned char> &I);
91 void readPNGfromMemOpenCV(const std::vector<unsigned char> &buffer, vpImage<vpRGBa> &I);
92 
93 void writePNGtoMemOpenCV(const vpImage<unsigned char> &I, std::vector<unsigned char> &buffer);
94 void writePNGtoMemOpenCV(const vpImage<vpRGBa> &I, std::vector<unsigned char> &buffer, bool saveAlpha);
95 #endif
96 
97 #if defined(VISP_HAVE_SIMDLIB)
98 // Simd lib
99 void readSimdlib(vpImage<unsigned char> &I, const std::string &filename);
100 void readSimdlib(vpImage<vpRGBa> &I, const std::string &filename);
101 
102 void writeJPEGSimdlib(const vpImage<unsigned char> &I, const std::string &filename, int quality);
103 void writeJPEGSimdlib(const vpImage<vpRGBa> &I, const std::string &filename, int quality);
104 
105 void writePNGSimdlib(const vpImage<unsigned char> &I, const std::string &filename);
106 void writePNGSimdlib(const vpImage<vpRGBa> &I, const std::string &filename);
107 #endif
108 
109 #if defined(VISP_HAVE_TINYEXR)
110 // TinyEXR lib
111 void readEXRTiny(vpImage<float> &I, const std::string &filename);
112 void readEXRTiny(vpImage<vpRGBf> &I, const std::string &filename);
113 
114 void writeEXRTiny(const vpImage<float> &I, const std::string &filename);
115 void writeEXRTiny(const vpImage<vpRGBf> &I, const std::string &filename);
116 #endif
117 
118 #if defined(VISP_HAVE_STBIMAGE)
119 // stb_image lib
120 void readStb(vpImage<unsigned char> &I, const std::string &filename);
121 void readStb(vpImage<vpRGBa> &I, const std::string &filename);
122 
123 void writeJPEGStb(const vpImage<unsigned char> &I, const std::string &filename, int quality);
124 void writeJPEGStb(const vpImage<vpRGBa> &I, const std::string &filename, int quality);
125 
126 void writePNGStb(const vpImage<unsigned char> &I, const std::string &filename);
127 void writePNGStb(const vpImage<vpRGBa> &I, const std::string &filename);
128 
129 void readPNGfromMemStb(const std::vector<unsigned char> &buffer, vpImage<unsigned char> &I);
130 void readPNGfromMemStb(const std::vector<unsigned char> &buffer, vpImage<vpRGBa> &I);
131 
132 void writePNGtoMemStb(const vpImage<unsigned char> &I, std::vector<unsigned char> &buffer);
133 void writePNGtoMemStb(const vpImage<vpRGBa> &I, std::vector<unsigned char> &buffer, bool saveAlpha);
134 #endif
135 
136 #endif