Go to the documentation of this file.
23 namespace cv {
class Mat; }
175 unsigned int width,
unsigned int height,
266 CImage& out_img,
unsigned int width,
unsigned int height,
274 CImage& out_img,
double ang,
unsigned int cx,
unsigned int cy,
275 double scale = 1.0)
const;
289 void setPixel(
int x,
int y,
size_t color)
override;
298 int x,
int y,
int radius,
300 unsigned int width = 1)
override;
347 const CImage& patch,
const unsigned int col,
const unsigned int row);
355 CImage& patch,
const unsigned int col = 0,
const unsigned int row = 0,
356 const unsigned int width = 1,
const unsigned int height = 1)
const;
365 const CImage& img2int,
int width_init = 0,
int height_init = 0)
const;
388 int u_search_ini = -1,
int v_search_ini = -1,
int u_search_size = -1,
389 int v_search_size = -1,
float biasThisImg = 0,
390 float biasInImg = 0)
const;
436 CImage& out_img,
int W = 3,
int H = 3,
double sigma = 1.0)
const;
451 std::vector<TPixelCoordf>& cornerCoords,
unsigned int check_size_x,
452 unsigned int check_size_y,
unsigned int lines_width = 1,
453 unsigned int circles_radius = 4);
470 const unsigned int x,
const unsigned int y,
471 const unsigned int half_window_size)
const;
477 [[deprecated(
"Use makeShallowCopy() instead")]]
inline void
506 [[deprecated(
"Use a=std::move(b); instead ")]]
inline void copyFastFrom(
509 *
this = std::move(o);
520 "Prefer a ctor from a cv::Mat instead or use loadFromIplImage() "
521 "explicitly specifying the kind of copy to be done")]]
inline void
539 template <
typename CV_MAT>
558 [[deprecated(
"Use at<>(), ptr<>() or ptrLine() instead ")]] uint8_t*
560 unsigned int col,
unsigned int row, uint8_t channel = 0)
const;
566 template <
typename T>
568 unsigned int col,
unsigned int row,
unsigned int channel = 0)
const
570 return *
reinterpret_cast<const T*
>(
internal_get(col, row, channel));
573 template <
typename T>
574 T&
at(
unsigned int col,
unsigned int row,
unsigned int channel = 0)
576 return *
reinterpret_cast<T*
>(
internal_get(col, row, channel));
582 template <
typename T>
584 unsigned int col,
unsigned int row,
unsigned int channel = 0)
const
586 return reinterpret_cast<const T*
>(
internal_get(col, row, channel));
589 template <
typename T>
590 T*
ptr(
unsigned int col,
unsigned int row,
unsigned int channel = 0)
592 return reinterpret_cast<T*
>(
internal_get(col, row, channel));
596 template <
typename T>
599 return reinterpret_cast<const T*
>(
internal_get(0, row, 0));
602 template <
typename T>
615 unsigned int col,
unsigned int row,
unsigned int channel)
const;
624 float getAsFloat(
unsigned int col,
unsigned int row)
const;
631 unsigned int col,
unsigned int row,
unsigned int channel = 0)
const;
701 int x_min = 0,
int y_min = 0,
int x_max = -1,
int y_max = -1,
702 bool normalize_01 =
true)
const;
707 int y_min = 0,
int x_max = -1,
int y_max = -1)
const;
729 int x_min = 0,
int y_min = 0,
int x_max = -1,
int y_max = -1)
const;
735 int y_min = 0,
int x_max = -1,
int y_max = -1)
const;
815 void unload() const noexcept;
827 unsigned int width,
unsigned int height,
bool color,
828 unsigned char* rawpixels,
bool swapRedBlue = false);
835 unsigned int width,
unsigned int height,
unsigned int bytesPerRow,
836 unsigned char* red,
unsigned char* green,
unsigned char* blue);
843 template <typename MAT>
847 const unsigned int lx = m.cols();
848 const unsigned int ly = m.rows();
850 if (matrix_is_normalized)
852 for (
unsigned int y = 0; y < ly; y++)
854 auto* pixels = ptrLine<uint8_t>(y);
855 for (
unsigned int x = 0; x < lx; x++)
856 (*pixels++) =
static_cast<uint8_t
>(m.coeff(y, x) * 255);
861 for (
unsigned int y = 0; y < ly; y++)
863 auto* pixels = ptrLine<uint8_t>(y);
864 for (
unsigned int x = 0; x < lx; x++)
865 (*pixels++) =
static_cast<uint8_t
>(m.coeff(y, x));
876 template <
typename MAT>
878 const MAT& r,
const MAT& g,
const MAT& b,
879 bool matrix_is_normalized =
true)
883 ASSERT_((r.size() == g.size()) && (r.size() == b.size()));
884 const unsigned int lx = r.cols(), ly = r.rows();
887 if (matrix_is_normalized)
889 for (
unsigned int y = 0; y < ly; y++)
891 auto* pixels = ptrLine<uint8_t>(y);
892 for (
unsigned int x = 0; x < lx; x++)
894 (*pixels++) =
static_cast<uint8_t
>(r.coeff(y, x) * 255);
895 (*pixels++) =
static_cast<uint8_t
>(g.coeff(y, x) * 255);
896 (*pixels++) =
static_cast<uint8_t
>(b.coeff(y, x) * 255);
902 for (
unsigned int y = 0; y < ly; y++)
904 auto* pixels = ptrLine<uint8_t>(y);
905 for (
unsigned int x = 0; x < lx; x++)
907 (*pixels++) =
static_cast<uint8_t
>(r.coeff(y, x));
908 (*pixels++) =
static_cast<uint8_t
>(g.coeff(y, x));
909 (*pixels++) =
static_cast<uint8_t
>(b.coeff(y, x));
956 bool loadFromXPM(
const char*
const* xpm_array,
bool swap_rb =
true);
978 bool saveToFile(
const std::string& fileName,
int jpeg_quality = 95)
const;
1044 uint8_t*
internal_get(
int col,
int row, uint8_t channel = 0)
const;
void resize(std::size_t width, std::size_t height, TImageChannels nChannels, PixelDepth depth=PixelDepth::D8U)
Changes the size of the image, erasing previous contents (does NOT scale its current content,...
CV_MAT asCvMat(copy_type_t copy_type) const
unsigned char * operator()(unsigned int col, unsigned int row, unsigned int channel=0) const
Returns a pointer to a given pixel information.
void saveToStreamAsJPEG(mrpt::io::CStream &out, const int jpeg_quality=95) const
Save image to binary stream as a JPEG (.jpg) compressed format.
@ FAST_REF_OR_CONVERT_TO_GRAY
T & at(unsigned int col, unsigned int row, unsigned int channel=0)
size_t getWidth() const override
Returns the width of the image in pixels.
std::string getExternalStorageFile() const noexcept
Only if isExternallyStored() returns true.
void flipHorizontal()
Flips the image horizontally.
TImageChannels getChannelCount() const
Returns the number of channels, typically 1 (GRAY) or 3 (RGB)
bool isEmpty() const
Returns true if the object is in the state after default constructor.
static void setImagesPathBase(const std::string &path)
ctor_CImage_ref_or_gray
For usage in one of the CImage constructors.
void asCvMat(cv::Mat &out_img, copy_type_t copy_type) const
Makes a shallow or deep copy of this image into the provided cv::Mat.
#define DEFINE_SERIALIZABLE(class_name, NS)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
T * ptr(unsigned int col, unsigned int row, unsigned int channel=0)
void filterMedian(CImage &out_img, int W=3) const
Filter the image with a Median filter with a window size WxW, returning the filtered image in out_img...
bool m_imgIsExternalStorage
Set to true only when using setExternalStorage.
CImage makeDeepCopy() const
Returns a deep copy of this image.
TImageSize getSize() const
Return the size of the image.
TInterpolationMethod
Interpolation methods for images.
size_t getRowStride() const
Returns the row stride of the image: this is the number of bytes between two consecutive rows.
void clear()
Resets the image to the state after a default ctor.
void makeSureImageIsLoaded() const
Checks if the image is of type "external storage", and if so and not loaded yet, load it.
copy_type_t
Define kind of copies
CImage grayscale() const
Returns a grayscale version of the image, or a shallow copy of itself if it is already a grayscale im...
spimpl::impl_ptr< T > pimpl
const T * ptr(unsigned int col, unsigned int row, unsigned int channel=0) const
Returns a pointer to a given pixel, without checking for boundaries.
mrpt::vision::TStereoCalibResults out
void copyFromForceLoad(const CImage &o)
Copies from another image (shallow copy), and, if it is externally stored, the image file will be act...
std::string m_externalFile
The file name of a external storage image.
float correlate(const CImage &img2int, int width_init=0, int height_init=0) const
Computes the correlation coefficient (returned as val), between two images This function use grayscal...
#define ASSERT_(f)
Defines an assertion mechanism.
T * ptrLine(unsigned int row)
void setFromRGBMatrices(const MAT &r, const MAT &g, const MAT &b, bool matrix_is_normalized=true)
Set the image from RGB matrices, given the pixels in the range [0,1] (normalized=true) or [0,...
bool isColor() const
Returns true if the image is RGB, false if it is grayscale.
TImageChannels
For use in mrpt::img::CImage.
CImage scaleDouble(TInterpolationMethod interp) const
Returns a new image scaled up to double its original size.
float getAsFloat(unsigned int col, unsigned int row, unsigned int channel) const
Returns the contents of a given pixel at the desired channel, in float format: [0,...
void setPixel(int x, int y, size_t color) override
Changes the value of the pixel (x,y).
void swapRB()
Swaps red and blue channels.
void forceLoad() const
For external storage image objects only, this method makes sure the image is loaded in memory.
mrpt::pimpl< Impl > m_impl
Used in mrpt::img::CImage.
void setFromMatrix(const MAT &m, bool matrix_is_normalized=true)
Set the image from a matrix, interpreted as grayscale intensity values, in the range [0,...
void setFromImageReadOnly(const CImage &o)
void equalizeHist(CImage &out_img) const
Equalize the image histogram, saving the new image in the given output object.
float getMaxAsFloat() const
Return the maximum pixel value of the image, as a float value in the range [0,1].
void getAsMatrix(mrpt::math::CMatrixFloat &outMatrix, bool doResize=true, int x_min=0, int y_min=0, int x_max=-1, int y_max=-1, bool normalize_01=true) const
Returns the image as a matrix with pixel grayscale values in the range [0,1].
cv::Mat & asCvMatRef()
Get a reference to the internal cv::Mat, which can be resized, etc.
void flipVertical()
Flips the image vertically.
CImage makeShallowCopy() const
Returns a shallow copy of the original image.
void filterGaussian(CImage &out_img, int W=3, int H=3, double sigma=1.0) const
Filter the image with a Gaussian filter with a window size WxH, replacing "this" image by the filtere...
void loadFromMemoryBuffer(unsigned int width, unsigned int height, bool color, unsigned char *rawpixels, bool swapRedBlue=false)
Reads the image from raw pixels buffer in memory.
This virtual class defines the interface of any object accepting drawing primitives on it.
void getAsRGBMatrices(mrpt::math::CMatrixFloat &outMatrixR, mrpt::math::CMatrixFloat &outMatrixG, mrpt::math::CMatrixFloat &outMatrixB, bool doResize=true, int x_min=0, int y_min=0, int x_max=-1, int y_max=-1) const
Returns the image as RGB matrices with pixel values in the range [0,1].
std::string getChannelsOrder() const
As of mrpt 2.0.0, this returns either "GRAY" or "BGR".
void swap(CImage &o)
Efficiently swap of two images.
CImage scaleHalf(TInterpolationMethod interp) const
Returns a new image scaled down to half its original size.
void loadFromStreamAsJPEG(mrpt::io::CStream &in)
Reads the image from a binary stream containing a binary jpeg file.
bool isOriginTopLeft() const
Returns true (as of MRPT v2.0.0, it's fixed)
void getAsMatrixTiled(mrpt::math::CMatrixFloat &outMatrix) const
Returns the image as a matrix, where the image is "tiled" (repeated) the required number of times to ...
@ DEEP_COPY
Deep copy: the copied object has a duplicate of all data, becoming independent
CImage()
Default constructor: initialize to empty image.
DECLARE_MEXPLUS_FROM(mrpt::img::TCamera) namespace std
void line(int x0, int y0, int x1, int y1, const mrpt::img::TColor color, unsigned int width=1, TPenStyle penStyle=psSolid) override
Draws a line.
static int SERIALIZATION_JPEG_QUALITY()
uint8_t * get_unsafe(unsigned int col, unsigned int row, uint8_t channel=0) const
Access to pixels without checking boundaries - Use normally the () operator better,...
The virtual base class which provides a unified interface for all persistent objects in MRPT.
void getAsIplImage(IplImage *dest) const
(DEPRECATED, DO NOT USE - Kept here only to interface opencv 2.4)
CImage colorImage() const
Returns a color (RGB) version of the grayscale image, or a shallow copy of itself if it is already a ...
static bool DISABLE_ZIP_COMPRESSION()
void drawCircle(int x, int y, int radius, const mrpt::img::TColor &color=mrpt::img::TColor(255, 255, 255), unsigned int width=1) override
Draws a circle of a given radius.
Parameters for the Brown-Conrady camera lens distortion model.
static const std::string & getImagesPathBase()
By default, ".".
void joinImagesHorz(const CImage &im1, const CImage &im2)
Joins two images side-by-side horizontally.
CExceptionExternalImageNotFound(const std::string &s)
A class for storing images as grayscale or RGB bitmaps.
const T & at(unsigned int col, unsigned int row, unsigned int channel=0) const
Access to pixels without checking boundaries, and doing a reinterpret_cast<> of the data as the given...
void cross_correlation_FFT(const CImage &in_img, math::CMatrixFloat &out_corr, int u_search_ini=-1, int v_search_ini=-1, int u_search_size=-1, int v_search_size=-1, float biasThisImg=0, float biasInImg=0) const
Computes the correlation matrix between this image and another one.
void rectifyImageInPlace(void *mapX, void *mapY)
Rectify an image (undistorts and rectification) from a stereo pair according to a pair of precomputed...
bool saveToFile(const std::string &fileName, int jpeg_quality=95) const
Save the image to a file, whose format is determined from the extension (internally uses OpenCV).
void drawImage(int x, int y, const mrpt::img::CImage &img) override
Draws an image as a bitmap at a given position.
void undistort(CImage &out_img, const mrpt::img::TCamera &cameraParams) const
Undistort the image according to some camera parameters, and returns an output undistorted image.
void unload() const noexcept
For external storage image objects only, this method unloads the image from memory (or does nothing i...
size_t getHeight() const override
Returns the height of the image in pixels.
const T * ptrLine(unsigned int row) const
Returns a pointer to the first pixel of the given line.
void rotateImage(CImage &out_img, double ang, unsigned int cx, unsigned int cy, double scale=1.0) const
Rotates the image by the given angle around the given center point, with an optional scale factor.
@ SHALLOW_COPY
Shallow copy: the copied object is a reference to the original one.
void setExternalStorage(const std::string &fileName) noexcept
By using this method the image is marked as referenced to an external file, which will be loaded only...
void loadFromIplImage(const IplImage *iplImage, copy_type_t c=DEEP_COPY)
Assigns from an image in IplImage format.
void update_patch(const CImage &patch, const unsigned int col, const unsigned int row)
Update a part of this image with the "patch" given as argument.
CImage(const CImage &other_img, ctor_CImage_ref_or_gray)
Fast constructor of a grayscale version of another image, making a shallow copy from the original ima...
void scaleImage(CImage &out_img, unsigned int width, unsigned int height, TInterpolationMethod interp=IMG_INTERP_CUBIC) const
Scales this image to a new size, interpolating as needed, saving the new image in a different output ...
void setFromIplImageReadOnly(IplImage *iplImage)
A pair (x,y) of pixel coordinates (integer resolution).
static bool loadTGA(const std::string &fileName, mrpt::img::CImage &out_RGB, mrpt::img::CImage &out_alpha)
Loads a TGA true-color RGBA image as two CImage objects, one for the RGB channels plus a separate gra...
bool loadFromFile(const std::string &fileName, int isColor=-1)
Load image from a file, whose format is determined from the extension (internally uses OpenCV).
static bool DISABLE_JPEG_COMPRESSION()
bool drawChessboardCorners(std::vector< TPixelCoordf > &cornerCoords, unsigned int check_size_x, unsigned int check_size_y, unsigned int lines_width=1, unsigned int circles_radius=4)
Draw onto this image the detected corners of a chessboard.
struct _IplImage IplImage
void internal_fromIPL(const IplImage *iplImage, copy_type_t c)
void extract_patch(CImage &patch, const unsigned int col=0, const unsigned int row=0, const unsigned int width=1, const unsigned int height=1) const
Extract a patch from this image, saveing it into "patch" (its previous contents will be overwritten).
This template class provides the basic functionality for a general 2D any-size, resizable container o...
TPenStyle
Definition of pen styles.
#define DECLARE_MEX_CONVERSION
This must be inserted if a custom conversion method for MEX API is implemented in the class.
void normalize()
Optimize the brightness range of an image without using histogram Only for one channel images.
uint8_t * internal_get(int col, int row, uint8_t channel=0) const
std::string getExternalStorageFileAbsolutePath() const
Only if isExternallyStored() returns true.
bool loadFromXPM(const char *const *xpm_array, bool swap_rb=true)
Loads the image from an XPM array, as #include'd from a ".xpm" file.
bool isExternallyStored() const noexcept
See setExternalStorage().
float KLT_response(const unsigned int x, const unsigned int y, const unsigned int half_window_size) const
Compute the KLT response at a given pixel (x,y) - Only for grayscale images (for efficiency it avoids...
void copyFastFrom(CImage &o)
Moves an image from another object, erasing the origin image in the process.
PixelDepth getPixelDepth() const
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
Page generated by Doxygen 1.8.17 for MRPT 2.0.3 at Fri May 15 15:49:54 UTC 2020 | |