IDS peak IPL v1.11.0
Loading...
Searching...
No Matches
peak_ipl_image.hpp
Go to the documentation of this file.
1
11#pragma once
12
17
18#include <cstddef>
19#include <cstdint>
20#include <utility>
21#include <type_traits>
22
23namespace
24{
25class ImageBackendAccessor;
26}
27
31namespace peak
32{
33namespace ipl
34{
35
39class Image
40{
41public:
49 Image();
50
63 Image(const peak::ipl::PixelFormat& pixelFormat, size_t width, size_t height);
64
83 Image(
84 const peak::ipl::PixelFormat& pixelFormat, uint8_t* buffer, size_t bufferSize, size_t width, size_t height);
85
99 Image(const peak::ipl::PixelFormat& pixelFormat, size_t width, size_t height, uint64_t timestamp_ns);
100
121 Image(const peak::ipl::PixelFormat& pixelFormat, uint8_t* buffer, size_t bufferSize, size_t width, size_t height, uint64_t timestamp_ns);
122
129 ~Image();
130
142 Image(const Image& other);
143
155 Image& operator=(const Image& other);
156
165 Image(Image&& other) noexcept;
166
175 Image& operator=(Image&& other) noexcept;
176
186 PEAK_IPL_NO_DISCARD size_t Width() const;
187
197 PEAK_IPL_NO_DISCARD size_t Height() const;
198
209
226 PEAK_IPL_NO_DISCARD uint8_t* PixelPointer(size_t xPos, size_t yPos) const;
227
245 template<typename T, typename = std::enable_if_t<std::is_arithmetic<T>::value>>
246 PEAK_IPL_NO_DISCARD T* PixelPointer(size_t xPos, size_t yPos) const
247 {
248 return reinterpret_cast<T*>(PixelPointer(xPos, yPos));
249 }
250
260 PEAK_IPL_NO_DISCARD size_t ByteCount() const;
261
272
285 PEAK_IPL_NO_DISCARD uint8_t* Data() const;
286
301 template<typename T, typename = std::enable_if_t<std::is_arithmetic<T>::value>>
303 {
304 return reinterpret_cast<T*>(Data());
305 }
306
323
342 Image ConvertTo(const peak::ipl::PixelFormat& outputPixelFormat, uint8_t* outputImageBuffer,
343 size_t outputImageBufferSize,
345
359 template <typename Integer1, typename Integer2,
360 typename std::enable_if_t<std::is_integral<Integer1>::value, int> = 0,
361 typename std::enable_if_t<std::is_integral<Integer2>::value, int> = 0>
363 {
364 return Scale(peak::ipl::Size2D{static_cast<std::size_t>(width), static_cast<std::size_t>(height)}, algorithm);
365 }
366
380
396
412 template<typename FloatingPoint1, typename FloatingPoint2,
413 typename std::enable_if_t<std::is_floating_point<FloatingPoint1>::value, int> = 0,
414 typename std::enable_if_t<std::is_floating_point<FloatingPoint2>::value, int> = 0>
415 PEAK_IPL_NO_DISCARD inline Image Scale(FloatingPoint1 scaleFactorX, FloatingPoint2 scaleFactorY, peak::ipl::InterpolationAlgorithm algorithm=InterpolationAlgorithm::linear) const
416 {
417 return Scale(peak::ipl::ScaleFactor{static_cast<double>(scaleFactorX), static_cast<double>(scaleFactorY)}, algorithm);
418 }
419
432 void ScaleInto(const peak::ipl::Size2D& size, uint8_t* buffer, std::size_t bufferSize, peak::ipl::InterpolationAlgorithm algorithm=InterpolationAlgorithm::linear) const;
433
447
460
471
481 PEAK_IPL_NO_DISCARD bool Empty() const;
482
491 PEAK_IPL_NO_DISCARD uint64_t Timestamp() const;
492
497 PEAK_IPL_NO_DISCARD bool operator==(const Image& img) const;
498
503 PEAK_IPL_NO_DISCARD bool operator!=(const Image& img) const;
504
505private:
506 friend ImageBackendAccessor;
507
508 explicit Image(PEAK_IPL_IMAGE_HANDLE imageHandle, bool acquireReference=false);
509
510 PEAK_IPL_IMAGE_HANDLE m_backendHandle{};
511};
512
513} /* namespace ipl */
514} /* namespace peak */
515
516namespace
517{
518
520class ImageBackendAccessor
521{
522public:
530 PEAK_IPL_NO_DISCARD static PEAK_IPL_IMAGE_HANDLE BackendHandle(const peak::ipl::Image& image)
531 {
532 return image.m_backendHandle;
533 }
534
544 PEAK_IPL_NO_DISCARD static peak::ipl::Image CreateImage(PEAK_IPL_IMAGE_HANDLE imageHandle)
545 {
546 return peak::ipl::Image(imageHandle, false);
547 }
548
558 PEAK_IPL_NO_DISCARD static peak::ipl::Image CreateImageReference(PEAK_IPL_IMAGE_HANDLE imageHandle)
559 {
560 return peak::ipl::Image(imageHandle, true);
561 }
562};
563
564} /* namespace */
565
566namespace peak
567{
568namespace ipl
569{
571{
574 });
575}
576
577inline Image::Image(const peak::ipl::PixelFormat& pixelFormat, size_t width, size_t height)
578{
581 static_cast<PEAK_IPL_PIXEL_FORMAT>(pixelFormat.PixelFormatName()), width, height, &m_backendHandle);
582 });
583}
584
586 const peak::ipl::PixelFormat& pixelFormat, uint8_t* buffer, size_t bufferSize, size_t width, size_t height)
587{
590 static_cast<PEAK_IPL_PIXEL_FORMAT>(pixelFormat.PixelFormatName()), buffer, bufferSize, width, height,
591 &m_backendHandle);
592 });
593}
594
595inline Image::Image(const peak::ipl::PixelFormat& pixelFormat, size_t width, size_t height, uint64_t timestamp_ns) :
596 Image::Image(pixelFormat, width, height)
597{
599 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_SetTimestamp(m_backendHandle, timestamp_ns);
600 });
601}
602
604 const peak::ipl::PixelFormat& pixelFormat, uint8_t* buffer, size_t bufferSize, size_t width, size_t height, uint64_t timestamp_ns) :
605 Image::Image(pixelFormat, buffer, bufferSize, width, height)
606{
608 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_SetTimestamp(m_backendHandle, timestamp_ns);
609 });
610}
611
612inline Image::Image(PEAK_IPL_IMAGE_HANDLE imageHandle, bool acquireReference)
613 : m_backendHandle(imageHandle)
614{
615 if (acquireReference && m_backendHandle)
616 {
618 }
619}
620
622{
623 if (m_backendHandle)
624 {
625 (void)PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Destruct(m_backendHandle);
626 }
627}
628
629inline Image::Image(const Image& other)
630{
631 if (other.m_backendHandle)
632 {
633 ExecuteAndMapReturnCodes([&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Acquire(other.m_backendHandle); });
634 }
635
636 m_backendHandle = other.m_backendHandle;
637}
638
639inline Image& Image::operator=(const Image& other)
640{
641 if (this != &other)
642 {
643 if (m_backendHandle)
644 {
645 (void)PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Destruct(m_backendHandle);
646 }
647
648 if (other.m_backendHandle)
649 {
650 ExecuteAndMapReturnCodes([&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Acquire(other.m_backendHandle); });
651 }
652 }
653
654 m_backendHandle = other.m_backendHandle;
655
656 return *this;
657}
658
659inline Image::Image(Image&& other) noexcept
660{
661 *this = std::move(other);
662}
663
664inline Image& Image::operator=(Image&& other) noexcept
665{
666 if (this != &other)
667 {
668 if (m_backendHandle != nullptr)
669 {
670 (void)PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Destruct(m_backendHandle);
671 }
672 m_backendHandle = other.m_backendHandle;
673 other.m_backendHandle = nullptr;
674 }
675
676 return *this;
677}
678
679inline size_t Image::Width() const
680{
681 size_t width = 0;
682
683 ExecuteAndMapReturnCodes([&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetWidth(m_backendHandle, &width); });
684
685 return width;
686}
687
688inline size_t Image::Height() const
689{
690 size_t height = 0;
691
692 ExecuteAndMapReturnCodes([&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetHeight(m_backendHandle, &height); });
693
694 return height;
695}
696
698{
699 return {Width(), Height()};
700}
701
702inline uint8_t* Image::PixelPointer(size_t xPos, size_t yPos) const
703{
704 uint8_t* pixelPosition = nullptr;
705
707 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetPixelPointer(m_backendHandle, xPos, yPos, &pixelPosition);
708 });
709
710 return pixelPosition;
711}
712
713inline size_t Image::ByteCount() const
714{
715 size_t byteCount = 0;
716
718 [&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetByteCount(m_backendHandle, &byteCount); });
719
720 return byteCount;
721}
722
724{
726
729 m_backendHandle, reinterpret_cast<PEAK_IPL_PIXEL_FORMAT*>(&pixelFormatName));
730 });
731
732 return peak::ipl::PixelFormat{ pixelFormatName };
733}
734
735inline uint8_t* Image::Data() const
736{
737 uint8_t* data = nullptr;
738
739 ExecuteAndMapReturnCodes([&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetData(m_backendHandle, &data); });
740
741 return data;
742}
743
745 const peak::ipl::PixelFormat& outputPixelFormat, peak::ipl::ConversionMode conversionMode) const
746{
747 PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
749 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_ConvertTo(m_backendHandle,
750 static_cast<PEAK_IPL_PIXEL_FORMAT>(outputPixelFormat.PixelFormatName()),
751 static_cast<PEAK_IPL_CONVERSION_MODE>(conversionMode), &outputImageHandle);
752 });
753
754 return ImageBackendAccessor::CreateImage(outputImageHandle);
755}
756
757inline Image Image::ConvertTo(const peak::ipl::PixelFormat& outputPixelFormat, uint8_t* outputImageBuffer,
758 size_t outputImageBufferSize, peak::ipl::ConversionMode conversionMode) const
759{
760 PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
763 static_cast<PEAK_IPL_PIXEL_FORMAT>(outputPixelFormat.PixelFormatName()), outputImageBuffer,
764 outputImageBufferSize, static_cast<PEAK_IPL_CONVERSION_MODE>(conversionMode), &outputImageHandle);
765 });
766
767 return ImageBackendAccessor::CreateImage(outputImageHandle);
768}
769
770inline Image Image::Scale(const Size2D& size, peak::ipl::InterpolationAlgorithm algorithm) const
771{
772 PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
773 const PEAK_IPL_SIZE_2D size_in{size.width, size.height};
774
776 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Scale(m_backendHandle, &size_in, static_cast<PEAK_IPL_INTERPOLATION_ALGORITHM>(algorithm), &outputImageHandle);
777 });
778
779 return ImageBackendAccessor::CreateImage(outputImageHandle);
780}
781
783{
784 return Scale(Size2D{static_cast<size_t>(static_cast<double>(Width()) * factor.x), static_cast<size_t>(static_cast<double>(Height()) * factor.y)}, algorithm);
785}
786
787inline void Image::ScaleInto(const Size2D& size, uint8_t* buffer, std::size_t bufferSize, peak::ipl::InterpolationAlgorithm algorithm) const
788{
789 const PEAK_IPL_SIZE_2D size_in{size.width, size.height};
790
792 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_ScaleInto(m_backendHandle, &size_in, buffer, bufferSize, static_cast<PEAK_IPL_INTERPOLATION_ALGORITHM>(algorithm));
793 });
794}
795
796
797inline Image Image::Crop(const Point2D& pos, const Size2D& size) const
798{
799 PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
800 const PEAK_IPL_POINT_2D pos_in{pos.x, pos.y};
801 const PEAK_IPL_SIZE_2D size_in{size.width, size.height};
802
804 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Crop(m_backendHandle, &pos_in, &size_in, &outputImageHandle);
805 });
806
807 return ImageBackendAccessor::CreateImage(outputImageHandle);
808}
809
810inline Image Image::Crop(const Size2D& size) const
811{
812 return Crop({0,0}, size);
813}
814
815inline Image Image::Clone() const
816{
817 PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
819 [&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Clone(m_backendHandle, &outputImageHandle); });
820
821 return ImageBackendAccessor::CreateImage(outputImageHandle);
822}
823
824inline bool Image::Empty() const
825{
826 return (m_backendHandle == nullptr) || (PixelFormat().PixelFormatName() == PixelFormatName::Invalid);
827}
828
829inline uint64_t Image::Timestamp() const
830{
831 uint64_t timestamp_ns;
833 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetTimestamp(m_backendHandle, &timestamp_ns);
834 });
835
836 return timestamp_ns;
837}
838
839inline bool Image::operator==(const peak::ipl::Image& img) const
840{
841 if (img.ByteCount() != this->ByteCount())
842 {
843 return false;
844 }
845 if (img.Width() != this->Width())
846 {
847 return false;
848 }
849 if (img.Height() != this->Height())
850 {
851 return false;
852 }
853 if (img.PixelFormat().PixelFormatName() != this->PixelFormat().PixelFormatName())
854 {
855 return false;
856 }
857 if (img.Timestamp() != this->Timestamp())
858 {
859 return false;
860 }
861
862 return memcmp(img.Data(), this->Data(), img.ByteCount()) == 0;
863}
864
865inline bool Image::operator!=(const peak::ipl::Image& img) const
866{
867 return !(*this == img);
868}
869
870} /* namespace ipl */
871} /* namespace peak */
Stores the pixel format, width and height of an image and the pointer to the image buffer.
Definition peak_ipl_image.hpp:40
T * PixelPointer(size_t xPos, size_t yPos) const
Returns the pixel pointer to the given pixel position in relation to the size of the pixel format.
Definition peak_ipl_image.hpp:246
bool operator!=(const Image &img) const
Checks whether the image is data-wise different.
Definition peak_ipl_image.hpp:865
Image & operator=(const Image &other)
Copy assigment for Image instance.
Definition peak_ipl_image.hpp:639
size_t Width() const
Returns the width.
Definition peak_ipl_image.hpp:679
bool Empty() const
Checks whether the image is empty.
Definition peak_ipl_image.hpp:824
peak::ipl::Size2D Size() const
Returns the Size.
Definition peak_ipl_image.hpp:697
peak::ipl::PixelFormat PixelFormat() const
Returns the pixel format.
Definition peak_ipl_image.hpp:723
uint8_t * PixelPointer(size_t xPos, size_t yPos) const
Returns the pixel pointer to the given pixel position in relation to the size of the pixel format.
Definition peak_ipl_image.hpp:702
size_t ByteCount() const
Returns the size of the given image in number of bytes.
Definition peak_ipl_image.hpp:713
bool operator==(const Image &img) const
Checks whether the image is data-wise the same.
Definition peak_ipl_image.hpp:839
uint8_t * Data() const
Returns the pointer to the first pixel position in dependency on the size of the pixel format.
Definition peak_ipl_image.hpp:735
void ScaleInto(const peak::ipl::Size2D &size, uint8_t *buffer, std::size_t bufferSize, peak::ipl::InterpolationAlgorithm algorithm=InterpolationAlgorithm::linear) const
Scale the image to the supplied width and height using the supplied algorithm and save it into the su...
Definition peak_ipl_image.hpp:787
size_t Height() const
Returns the height.
Definition peak_ipl_image.hpp:688
Image Crop(const peak::ipl::Point2D &pos, const peak::ipl::Size2D &size) const
Crop the image to the size starting at pos.
Definition peak_ipl_image.hpp:797
Image Clone() const
Returns a new created image containing the data of the current image as deep copy.
Definition peak_ipl_image.hpp:815
~Image()
Destructor for the Image instance.
Definition peak_ipl_image.hpp:621
Image()
Creates an empty image. In other words, size is 0x0 and an invalid pixel format.
Definition peak_ipl_image.hpp:570
Image ConvertTo(const peak::ipl::PixelFormat &outputPixelFormat, peak::ipl::ConversionMode conversionMode=peak::ipl::ConversionMode::Fast) const
Returns a new created image containing the data of the current image converted to the given pixel for...
Definition peak_ipl_image.hpp:744
uint64_t Timestamp() const
The timestamp in nanoseconds.
Definition peak_ipl_image.hpp:829
Image Scale(Integer1 width, Integer2 height, peak::ipl::InterpolationAlgorithm algorithm=InterpolationAlgorithm::linear) const
Scale the image to the supplied width and height using the supplied algorithm.
Definition peak_ipl_image.hpp:362
Image Scale(FloatingPoint1 scaleFactorX, FloatingPoint2 scaleFactorY, peak::ipl::InterpolationAlgorithm algorithm=InterpolationAlgorithm::linear) const
Scale the image to the supplied scale factors scaleFactorX and scaleFactorY using the supplied algori...
Definition peak_ipl_image.hpp:415
T * Data() const
Returns the pointer to the first pixel position in dependency on the size of the pixel format.
Definition peak_ipl_image.hpp:302
Represents a pixel format and its specific properties.
Definition peak_ipl_pixel_format.hpp:32
peak::ipl::PixelFormatName PixelFormatName() const
Returns the name of the pixel format as enum value.
Definition peak_ipl_pixel_format.hpp:122
InterpolationAlgorithm
Enum holding the possible interpolation algorithm.
Definition peak_ipl_simple_types.hpp:194
@ linear
bilinear interpolation
PixelFormatName
Enum holding the possible pixel format names.
Definition peak_ipl_simple_types.hpp:39
@ Invalid
Invalid Pixel Format.
ConversionMode
Enum holding the possible conversion modes.
Definition peak_ipl_simple_types.hpp:29
@ Fast
Fast conversion mode.
void ExecuteAndMapReturnCodes(const CallableType &callableObject)
Definition peak_ipl_exception.hpp:182
The "peak::ipl" namespace contains the whole image processing library.
Definition peak_ipl_binning.hpp:23
PEAK_IPL_C_API PEAK_IPL_Image_Destruct(PEAK_IPL_IMAGE_HANDLE imageHandle)
Destroys the image associated with the given handle.
PEAK_IPL_C_API PEAK_IPL_Image_ConstructFromBuffer(PEAK_IPL_PIXEL_FORMAT pixelFormat, uint8_t *buffer, uint64_t bufferSize, size_t width, size_t height, PEAK_IPL_IMAGE_HANDLE *imageHandle)
Creates an image from a given buffer.
PEAK_IPL_C_API PEAK_IPL_Image_Construct(PEAK_IPL_PIXEL_FORMAT pixelFormat, size_t width, size_t height, PEAK_IPL_IMAGE_HANDLE *imageHandle)
Creates an image.
PEAK_IPL_C_API PEAK_IPL_Image_Acquire(PEAK_IPL_IMAGE_HANDLE imageHandle)
Increase the reference count of an image object.
PEAK_IPL_C_API PEAK_IPL_Image_GetWidth(PEAK_IPL_IMAGE_HANDLE imageHandle, size_t *width)
Queries the width of the given image.
int32_t PEAK_IPL_CONVERSION_MODE
Definition peak_ipl_backend.h:70
PEAK_IPL_C_API PEAK_IPL_Image_GetTimestamp(PEAK_IPL_IMAGE_HANDLE imageHandle, uint64_t *timestamp_ns)
Get the timestamp for an image in nanoseconds.
PEAK_IPL_C_API PEAK_IPL_Image_ConvertTo(PEAK_IPL_IMAGE_HANDLE imageHandle, PEAK_IPL_PIXEL_FORMAT outputPixelFormat, PEAK_IPL_CONVERSION_MODE conversionMode, PEAK_IPL_IMAGE_HANDLE *outputImageHandle)
Creates a new image containing the data of the current image converted to the given pixel format.
PEAK_IPL_C_API PEAK_IPL_Image_Clone(PEAK_IPL_IMAGE_HANDLE imageHandle, PEAK_IPL_IMAGE_HANDLE *outputImageHandle)
Returns a new created image containing the data of the current image as deep copy.
PEAK_IPL_C_API PEAK_IPL_Image_GetByteCount(PEAK_IPL_IMAGE_HANDLE imageHandle, size_t *byteCount)
Queries the size of the given image in number of bytes.
PEAK_IPL_C_API PEAK_IPL_Image_GetPixelFormat(PEAK_IPL_IMAGE_HANDLE imageHandle, PEAK_IPL_PIXEL_FORMAT *pixelFormat)
Queries the pixel format of the given image.
struct PEAK_IPL_IMAGE * PEAK_IPL_IMAGE_HANDLE
Definition peak_ipl_backend.h:361
PEAK_IPL_C_API PEAK_IPL_Image_ScaleInto(PEAK_IPL_IMAGE_HANDLE imageHandle, const struct PEAK_IPL_SIZE_2D *size, uint8_t *buffer, size_t bufferSize, PEAK_IPL_INTERPOLATION_ALGORITHM algorithm)
Creates a new image scaled to size using algorithm into the supplied buffer.
PEAK_IPL_C_API PEAK_IPL_Image_Crop(PEAK_IPL_IMAGE_HANDLE imageHandle, const struct PEAK_IPL_POINT_2D *pos, const struct PEAK_IPL_SIZE_2D *size, PEAK_IPL_IMAGE_HANDLE *outputImageHandle)
Creates a new image cropped to size starting at position.
@ PEAK_IPL_PIXEL_FORMAT_INVALID
Definition peak_ipl_backend.h:75
PEAK_IPL_C_API PEAK_IPL_Image_Scale(PEAK_IPL_IMAGE_HANDLE imageHandle, const struct PEAK_IPL_SIZE_2D *size, PEAK_IPL_INTERPOLATION_ALGORITHM algorithm, PEAK_IPL_IMAGE_HANDLE *outputImageHandle)
Creates a new image scaled to size using algorithm.
PEAK_IPL_C_API PEAK_IPL_Image_GetData(PEAK_IPL_IMAGE_HANDLE imageHandle, uint8_t **data)
Queries the data pointer of the given image.
int32_t PEAK_IPL_INTERPOLATION_ALGORITHM
Definition peak_ipl_backend.h:310
PEAK_IPL_C_API PEAK_IPL_Image_GetHeight(PEAK_IPL_IMAGE_HANDLE imageHandle, size_t *height)
Queries the height of the given image.
#define PEAK_IPL_NO_DISCARD
Definition peak_ipl_backend.h:26
int32_t PEAK_IPL_PIXEL_FORMAT
Definition peak_ipl_backend.h:180
PEAK_IPL_C_API PEAK_IPL_Image_GetPixelPointer(PEAK_IPL_IMAGE_HANDLE imageHandle, size_t xPos, size_t yPos, uint8_t **pixelPointer)
Queries the pointer to the given pixel position.
PEAK_IPL_C_API PEAK_IPL_Image_SetTimestamp(PEAK_IPL_IMAGE_HANDLE imageHandle, uint64_t timestamp_ns)
Set the timestamp for an image in nanoseconds.
PEAK_IPL_C_API PEAK_IPL_Image_ConvertToBuffer(PEAK_IPL_IMAGE_HANDLE imageHandle, PEAK_IPL_PIXEL_FORMAT outputPixelFormat, uint8_t *outputImageBuffer, size_t outputImageBufferSize, PEAK_IPL_CONVERSION_MODE conversionMode, PEAK_IPL_IMAGE_HANDLE *outputImageHandle)
Stores the data of the current image converted to the given pixel format into a destination buffer an...
#define PEAK_IPL_C_ABI_PREFIX
Definition peak_ipl_dll_defines.h:16
Definition peak_ipl_backend.h:266
Definition peak_ipl_backend.h:272
2D position in an image.
Definition peak_ipl_simple_types.hpp:232
size_t x
X position.
Definition peak_ipl_simple_types.hpp:233
size_t y
Y position.
Definition peak_ipl_simple_types.hpp:234
Scale Factors of an image.
Definition peak_ipl_simple_types.hpp:257
double y
Y factor.
Definition peak_ipl_simple_types.hpp:259
double x
X factor.
Definition peak_ipl_simple_types.hpp:258
2D size of an image.
Definition peak_ipl_simple_types.hpp:208
size_t height
Height of size.
Definition peak_ipl_simple_types.hpp:210
size_t width
Width of size.
Definition peak_ipl_simple_types.hpp:209