IDS peak IPL v1.13.1
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
360 double factor, peak::ipl::ConversionMode conversionMode = peak::ipl::ConversionMode::Fast) const;
361
375 template <typename Integer1, typename Integer2,
376 typename std::enable_if_t<std::is_integral<Integer1>::value, int> = 0,
377 typename std::enable_if_t<std::is_integral<Integer2>::value, int> = 0>
379 {
380 return Scale(peak::ipl::Size2D{static_cast<std::size_t>(width), static_cast<std::size_t>(height)}, algorithm);
381 }
382
396
412
428 template<typename FloatingPoint1, typename FloatingPoint2,
429 typename std::enable_if_t<std::is_floating_point<FloatingPoint1>::value, int> = 0,
430 typename std::enable_if_t<std::is_floating_point<FloatingPoint2>::value, int> = 0>
431 PEAK_IPL_NO_DISCARD inline Image Scale(FloatingPoint1 scaleFactorX, FloatingPoint2 scaleFactorY, peak::ipl::InterpolationAlgorithm algorithm=InterpolationAlgorithm::linear) const
432 {
433 return Scale(peak::ipl::ScaleFactor{static_cast<double>(scaleFactorX), static_cast<double>(scaleFactorY)}, algorithm);
434 }
435
448 void ScaleInto(const peak::ipl::Size2D& size, uint8_t* buffer, std::size_t bufferSize, peak::ipl::InterpolationAlgorithm algorithm=InterpolationAlgorithm::linear) const;
449
463
476
487
497 PEAK_IPL_NO_DISCARD bool Empty() const;
498
507 PEAK_IPL_NO_DISCARD uint64_t Timestamp() const;
508
513 PEAK_IPL_NO_DISCARD bool operator==(const Image& img) const;
514
519 PEAK_IPL_NO_DISCARD bool operator!=(const Image& img) const;
520
521private:
522 friend ImageBackendAccessor;
523
524 explicit Image(PEAK_IPL_IMAGE_HANDLE imageHandle, bool acquireReference=false);
525
526 PEAK_IPL_IMAGE_HANDLE m_backendHandle{};
527};
528
529} /* namespace ipl */
530} /* namespace peak */
531
532namespace
533{
534
536class ImageBackendAccessor
537{
538public:
546 PEAK_IPL_NO_DISCARD static PEAK_IPL_IMAGE_HANDLE BackendHandle(const peak::ipl::Image& image)
547 {
548 return image.m_backendHandle;
549 }
550
560 PEAK_IPL_NO_DISCARD static peak::ipl::Image CreateImage(PEAK_IPL_IMAGE_HANDLE imageHandle)
561 {
562 return peak::ipl::Image(imageHandle, false);
563 }
564
574 PEAK_IPL_NO_DISCARD static peak::ipl::Image CreateImageReference(PEAK_IPL_IMAGE_HANDLE imageHandle)
575 {
576 return peak::ipl::Image(imageHandle, true);
577 }
578};
579
580} /* namespace */
581
582namespace peak
583{
584namespace ipl
585{
587{
590 });
591}
592
593inline Image::Image(const peak::ipl::PixelFormat& pixelFormat, size_t width, size_t height)
594{
597 static_cast<PEAK_IPL_PIXEL_FORMAT>(pixelFormat.PixelFormatName()), width, height, &m_backendHandle);
598 });
599}
600
602 const peak::ipl::PixelFormat& pixelFormat, uint8_t* buffer, size_t bufferSize, size_t width, size_t height)
603{
606 static_cast<PEAK_IPL_PIXEL_FORMAT>(pixelFormat.PixelFormatName()), buffer, bufferSize, width, height,
607 &m_backendHandle);
608 });
609}
610
611inline Image::Image(const peak::ipl::PixelFormat& pixelFormat, size_t width, size_t height, uint64_t timestamp_ns) :
612 Image::Image(pixelFormat, width, height)
613{
615 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_SetTimestamp(m_backendHandle, timestamp_ns);
616 });
617}
618
620 const peak::ipl::PixelFormat& pixelFormat, uint8_t* buffer, size_t bufferSize, size_t width, size_t height, uint64_t timestamp_ns) :
621 Image::Image(pixelFormat, buffer, bufferSize, width, height)
622{
624 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_SetTimestamp(m_backendHandle, timestamp_ns);
625 });
626}
627
628inline Image::Image(PEAK_IPL_IMAGE_HANDLE imageHandle, bool acquireReference)
629 : m_backendHandle(imageHandle)
630{
631 if (acquireReference && m_backendHandle)
632 {
634 }
635}
636
638{
639 if (m_backendHandle)
640 {
641 (void)PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Destruct(m_backendHandle);
642 }
643}
644
645inline Image::Image(const Image& other)
646{
647 if (other.m_backendHandle)
648 {
649 ExecuteAndMapReturnCodes([&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Acquire(other.m_backendHandle); });
650 }
651
652 m_backendHandle = other.m_backendHandle;
653}
654
655inline Image& Image::operator=(const Image& other)
656{
657 if (this != &other)
658 {
659 if (m_backendHandle)
660 {
661 (void)PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Destruct(m_backendHandle);
662 }
663
664 if (other.m_backendHandle)
665 {
666 ExecuteAndMapReturnCodes([&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Acquire(other.m_backendHandle); });
667 }
668 }
669
670 m_backendHandle = other.m_backendHandle;
671
672 return *this;
673}
674
675inline Image::Image(Image&& other) noexcept
676{
677 *this = std::move(other);
678}
679
680inline Image& Image::operator=(Image&& other) noexcept
681{
682 if (this != &other)
683 {
684 if (m_backendHandle != nullptr)
685 {
686 (void)PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Destruct(m_backendHandle);
687 }
688 m_backendHandle = other.m_backendHandle;
689 other.m_backendHandle = nullptr;
690 }
691
692 return *this;
693}
694
695inline size_t Image::Width() const
696{
697 size_t width = 0;
698
699 ExecuteAndMapReturnCodes([&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetWidth(m_backendHandle, &width); });
700
701 return width;
702}
703
704inline size_t Image::Height() const
705{
706 size_t height = 0;
707
708 ExecuteAndMapReturnCodes([&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetHeight(m_backendHandle, &height); });
709
710 return height;
711}
712
714{
715 return {Width(), Height()};
716}
717
718inline uint8_t* Image::PixelPointer(size_t xPos, size_t yPos) const
719{
720 uint8_t* pixelPosition = nullptr;
721
723 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetPixelPointer(m_backendHandle, xPos, yPos, &pixelPosition);
724 });
725
726 return pixelPosition;
727}
728
729inline size_t Image::ByteCount() const
730{
731 size_t byteCount = 0;
732
734 [&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetByteCount(m_backendHandle, &byteCount); });
735
736 return byteCount;
737}
738
740{
742
745 m_backendHandle, reinterpret_cast<PEAK_IPL_PIXEL_FORMAT*>(&pixelFormatName));
746 });
747
748 return peak::ipl::PixelFormat{ pixelFormatName };
749}
750
751inline uint8_t* Image::Data() const
752{
753 uint8_t* data = nullptr;
754
755 ExecuteAndMapReturnCodes([&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetData(m_backendHandle, &data); });
756
757 return data;
758}
759
761 const peak::ipl::PixelFormat& outputPixelFormat, peak::ipl::ConversionMode conversionMode) const
762{
763 PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
765 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_ConvertTo(m_backendHandle,
766 static_cast<PEAK_IPL_PIXEL_FORMAT>(outputPixelFormat.PixelFormatName()),
767 static_cast<PEAK_IPL_CONVERSION_MODE>(conversionMode), &outputImageHandle);
768 });
769
770 return ImageBackendAccessor::CreateImage(outputImageHandle);
771}
772
773inline Image Image::ConvertTo(const peak::ipl::PixelFormat& outputPixelFormat, uint8_t* outputImageBuffer,
774 size_t outputImageBufferSize, peak::ipl::ConversionMode conversionMode) const
775{
776 PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
779 static_cast<PEAK_IPL_PIXEL_FORMAT>(outputPixelFormat.PixelFormatName()), outputImageBuffer,
780 outputImageBufferSize, static_cast<PEAK_IPL_CONVERSION_MODE>(conversionMode), &outputImageHandle);
781 });
782
783 return ImageBackendAccessor::CreateImage(outputImageHandle);
784}
785
787 const peak::ipl::PixelFormat& outputPixelFormat, double factor, peak::ipl::ConversionMode conversionMode) const
788{
789 PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
792 static_cast<PEAK_IPL_PIXEL_FORMAT>(outputPixelFormat.PixelFormatName()), factor,
793 static_cast<PEAK_IPL_CONVERSION_MODE>(conversionMode), &outputImageHandle);
794 });
795
796 return ImageBackendAccessor::CreateImage(outputImageHandle);
797}
798
799inline Image Image::Scale(const Size2D& size, peak::ipl::InterpolationAlgorithm algorithm) const
800{
801 PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
802 const PEAK_IPL_SIZE_2D size_in{size.width, size.height};
803
805 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Scale(m_backendHandle, &size_in, static_cast<PEAK_IPL_INTERPOLATION_ALGORITHM>(algorithm), &outputImageHandle);
806 });
807
808 return ImageBackendAccessor::CreateImage(outputImageHandle);
809}
810
812{
813 return Scale(Size2D{static_cast<size_t>(static_cast<double>(Width()) * factor.x), static_cast<size_t>(static_cast<double>(Height()) * factor.y)}, algorithm);
814}
815
816inline void Image::ScaleInto(const Size2D& size, uint8_t* buffer, std::size_t bufferSize, peak::ipl::InterpolationAlgorithm algorithm) const
817{
818 const PEAK_IPL_SIZE_2D size_in{size.width, size.height};
819
821 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_ScaleInto(m_backendHandle, &size_in, buffer, bufferSize, static_cast<PEAK_IPL_INTERPOLATION_ALGORITHM>(algorithm));
822 });
823}
824
825
826inline Image Image::Crop(const Point2D& pos, const Size2D& size) const
827{
828 PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
829 const PEAK_IPL_POINT_2D pos_in{pos.x, pos.y};
830 const PEAK_IPL_SIZE_2D size_in{size.width, size.height};
831
833 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Crop(m_backendHandle, &pos_in, &size_in, &outputImageHandle);
834 });
835
836 return ImageBackendAccessor::CreateImage(outputImageHandle);
837}
838
839inline Image Image::Crop(const Size2D& size) const
840{
841 return Crop({0,0}, size);
842}
843
844inline Image Image::Clone() const
845{
846 PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
848 [&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_Clone(m_backendHandle, &outputImageHandle); });
849
850 return ImageBackendAccessor::CreateImage(outputImageHandle);
851}
852
853inline bool Image::Empty() const
854{
855 return (m_backendHandle == nullptr) || (PixelFormat().PixelFormatName() == PixelFormatName::Invalid);
856}
857
858inline uint64_t Image::Timestamp() const
859{
860 uint64_t timestamp_ns;
862 return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Image_GetTimestamp(m_backendHandle, &timestamp_ns);
863 });
864
865 return timestamp_ns;
866}
867
868inline bool Image::operator==(const peak::ipl::Image& img) const
869{
870 if (img.ByteCount() != this->ByteCount())
871 {
872 return false;
873 }
874 if (img.Width() != this->Width())
875 {
876 return false;
877 }
878 if (img.Height() != this->Height())
879 {
880 return false;
881 }
882 if (img.PixelFormat().PixelFormatName() != this->PixelFormat().PixelFormatName())
883 {
884 return false;
885 }
886 if (img.Timestamp() != this->Timestamp())
887 {
888 return false;
889 }
890
891 return memcmp(img.Data(), this->Data(), img.ByteCount()) == 0;
892}
893
894inline bool Image::operator!=(const peak::ipl::Image& img) const
895{
896 return !(*this == img);
897}
898
899} /* namespace ipl */
900} /* 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:894
Image & operator=(const Image &other)
Copy assigment for Image instance.
Definition peak_ipl_image.hpp:655
size_t Width() const
Returns the width.
Definition peak_ipl_image.hpp:695
bool Empty() const
Checks whether the image is empty.
Definition peak_ipl_image.hpp:853
peak::ipl::Size2D Size() const
Returns the Size.
Definition peak_ipl_image.hpp:713
peak::ipl::PixelFormat PixelFormat() const
Returns the pixel format.
Definition peak_ipl_image.hpp:739
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:718
size_t ByteCount() const
Returns the size of the given image in number of bytes.
Definition peak_ipl_image.hpp:729
bool operator==(const Image &img) const
Checks whether the image is data-wise the same.
Definition peak_ipl_image.hpp:868
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:751
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:816
size_t Height() const
Returns the height.
Definition peak_ipl_image.hpp:704
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:826
Image Clone() const
Returns a new created image containing the data of the current image as deep copy.
Definition peak_ipl_image.hpp:844
~Image()
Destructor for the Image instance.
Definition peak_ipl_image.hpp:637
Image()
Creates an empty image. In other words, size is 0x0 and an invalid pixel format.
Definition peak_ipl_image.hpp:586
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:760
uint64_t Timestamp() const
The timestamp in nanoseconds.
Definition peak_ipl_image.hpp:858
Image ConvertToWithFactor(const peak::ipl::PixelFormat &outputPixelFormat, double factor, 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:786
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:378
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:431
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:202
@ 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_ConvertToWithFactor(PEAK_IPL_IMAGE_HANDLE imageHandle, PEAK_IPL_PIXEL_FORMAT outputPixelFormat, double factor, 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 mult...
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:369
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:318
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:188
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:274
Definition peak_ipl_backend.h:280
2D position in an image.
Definition peak_ipl_simple_types.hpp:240
size_t x
X position.
Definition peak_ipl_simple_types.hpp:241
size_t y
Y position.
Definition peak_ipl_simple_types.hpp:242
Scale Factors of an image.
Definition peak_ipl_simple_types.hpp:265
double y
Y factor.
Definition peak_ipl_simple_types.hpp:267
double x
X factor.
Definition peak_ipl_simple_types.hpp:266
2D size of an image.
Definition peak_ipl_simple_types.hpp:216
size_t height
Height of size.
Definition peak_ipl_simple_types.hpp:218
size_t width
Width of size.
Definition peak_ipl_simple_types.hpp:217