26class ImageBackendAccessor;
85 const peak::ipl::PixelFormat& pixelFormat, uint8_t* buffer,
size_t bufferSize,
size_t width,
size_t height);
122 Image(
const peak::ipl::PixelFormat& pixelFormat, uint8_t* buffer,
size_t bufferSize,
size_t width,
size_t height, uint64_t timestamp_ns);
246 template<typename T, typename = std::enable_if_t<std::is_arithmetic<T>::value>>
302 template<typename T, typename = std::enable_if_t<std::is_arithmetic<T>::value>>
305 return reinterpret_cast<T*
>(
Data());
347 size_t outputImageBufferSize,
402 uint8_t* outputImageBuffer,
size_t outputImageBufferSize,
double factor,
double offset = 0.0,
468 template <
typename Integer1,
typename Integer2,
469 typename std::enable_if_t<std::is_integral<Integer1>::value,
int> = 0,
470 typename std::enable_if_t<std::is_integral<Integer2>::value,
int> = 0>
473 return Scale(
peak::ipl::Size2D{
static_cast<std::size_t
>(width),
static_cast<std::size_t
>(height)}, algorithm);
521 template<
typename FloatingPoint1,
typename FloatingPoint2,
522 typename std::enable_if_t<std::is_floating_point<FloatingPoint1>::value,
int> = 0,
523 typename std::enable_if_t<std::is_floating_point<FloatingPoint2>::value,
int> = 0>
615 friend ImageBackendAccessor;
629class ImageBackendAccessor
641 return image.m_backendHandle;
655 return peak::ipl::Image(imageHandle,
false);
669 return peak::ipl::Image(imageHandle,
true);
695 const peak::ipl::PixelFormat& pixelFormat, uint8_t* buffer,
size_t bufferSize,
size_t width,
size_t height)
713 const peak::ipl::PixelFormat& pixelFormat, uint8_t* buffer,
size_t bufferSize,
size_t width,
size_t height, uint64_t timestamp_ns) :
714 Image::
Image(pixelFormat, buffer, bufferSize, width, height)
722 : m_backendHandle(imageHandle)
724 if (acquireReference && m_backendHandle)
740 if (other.m_backendHandle)
745 m_backendHandle = other.m_backendHandle;
757 if (other.m_backendHandle)
763 m_backendHandle = other.m_backendHandle;
770 *
this = std::move(other);
777 if (m_backendHandle !=
nullptr)
781 m_backendHandle = other.m_backendHandle;
782 other.m_backendHandle =
nullptr;
813 uint8_t* pixelPosition =
nullptr;
819 return pixelPosition;
824 size_t byteCount = 0;
846 uint8_t* data =
nullptr;
863 return ImageBackendAccessor::CreateImage(outputImageHandle);
876 return ImageBackendAccessor::CreateImage(outputImageHandle);
889 return ImageBackendAccessor::CreateImage(outputImageHandle);
893 const peak::ipl::PixelFormat& outputPixelFormat, uint8_t* outputImageBuffer,
size_t outputImageBufferSize,
903 return ImageBackendAccessor::CreateImage(outputImageHandle);
916 return ImageBackendAccessor::CreateImage(outputImageHandle);
930 return ImageBackendAccessor::CreateImage(outputImageHandle);
942 return ImageBackendAccessor::CreateImage(outputImageHandle);
947 return Scale(
Size2D{
static_cast<size_t>(
static_cast<double>(
Width()) * factor.
x),
static_cast<size_t>(
static_cast<double>(
Height()) * factor.
y)}, algorithm);
970 return ImageBackendAccessor::CreateImage(outputImageHandle);
975 return Crop({0,0}, size);
984 return ImageBackendAccessor::CreateImage(outputImageHandle);
994 uint64_t timestamp_ns;
1004 if (img.
ByteCount() != this->ByteCount())
1008 if (img.
Width() != this->Width())
1012 if (img.
Height() != this->Height())
1020 if (img.
Timestamp() != this->Timestamp())
1025 return memcmp(img.
Data(), this->Data(), img.
ByteCount()) == 0;
1030 return !(*
this == img);
Stores the pixel format, width and height of an image and the pointer to the image buffer.
Definition peak_ipl_image.hpp:41
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:247
bool operator!=(const Image &img) const
Checks whether the image is data-wise different.
Definition peak_ipl_image.hpp:1028
Image & operator=(const Image &other)
Copy assigment for Image instance.
Definition peak_ipl_image.hpp:748
size_t Width() const
Returns the width.
Definition peak_ipl_image.hpp:788
bool Empty() const
Checks whether the image is empty.
Definition peak_ipl_image.hpp:987
peak::ipl::Size2D Size() const
Returns the Size.
Definition peak_ipl_image.hpp:806
Image ConvertToWithFactor(const peak::ipl::PixelFormat &outputPixelFormat, double factor, double offset=0.0, peak::ipl::ConversionMode conversionMode=peak::ipl::ConversionMode::Fast) const
Converts the image to the specified outputPixelFormat and scales the pixel values by the factor.
Definition peak_ipl_image.hpp:879
peak::ipl::PixelFormat PixelFormat() const
Returns the pixel format.
Definition peak_ipl_image.hpp:832
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:811
size_t ByteCount() const
Returns the size of the given image in number of bytes.
Definition peak_ipl_image.hpp:822
bool operator==(const Image &img) const
Checks whether the image is data-wise the same.
Definition peak_ipl_image.hpp:1002
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:844
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:950
Image ConvertToFromInterval(const peak::ipl::PixelFormat &outputPixelFormat, const peak::ipl::Interval< double > &interval, peak::ipl::ConversionMode conversionMode=peak::ipl::ConversionMode::Fast) const
Converts the image to the specified outputPixelFormat. The pixel values are mapped from interval to t...
Definition peak_ipl_image.hpp:906
size_t Height() const
Returns the height.
Definition peak_ipl_image.hpp:797
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:960
Image Clone() const
Returns a new created image containing the data of the current image as deep copy.
Definition peak_ipl_image.hpp:978
~Image()
Destructor for the Image instance.
Definition peak_ipl_image.hpp:730
Image()
Creates an empty image. In other words, size is 0x0 and an invalid pixel format.
Definition peak_ipl_image.hpp:679
Image ConvertTo(const peak::ipl::PixelFormat &outputPixelFormat, peak::ipl::ConversionMode conversionMode=peak::ipl::ConversionMode::Fast) const
Converts the image to the specified outputPixelFormat.
Definition peak_ipl_image.hpp:853
uint64_t Timestamp() const
The timestamp in nanoseconds.
Definition peak_ipl_image.hpp:992
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:471
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:524
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:303
Interval support and convenience class.
Definition peak_ipl_interval.hpp:35
constexpr T End() const
Get the end value (inclusive) for the interval.
Definition peak_ipl_interval.hpp:78
constexpr T Start() const
Get the start value (inclusive) for the interval.
Definition peak_ipl_interval.hpp:66
Definition peak_ipl_binning.hpp:25
InterpolationAlgorithm
Enum holding the possible interpolation algorithm.
Definition peak_ipl_simple_types.hpp:202
@ linear
bilinear interpolation
Definition peak_ipl_simple_types.hpp:204
PixelFormatName
Enum holding the possible pixel format names.
Definition peak_ipl_simple_types.hpp:39
@ Invalid
Invalid Pixel Format.
Definition peak_ipl_simple_types.hpp:40
ConversionMode
Enum holding the possible conversion modes.
Definition peak_ipl_simple_types.hpp:29
@ Fast
Fast conversion mode.
Definition peak_ipl_simple_types.hpp:30
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
#define PEAK_IPL_NO_DISCARD
Definition peak_ipl_attribute_defines.h:25
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_ConvertToFromInterval(PEAK_IPL_IMAGE_HANDLE imageHandle, PEAK_IPL_PIXEL_FORMAT outputPixelFormat, double start, double end, PEAK_IPL_CONVERSION_MODE conversionMode, PEAK_IPL_IMAGE_HANDLE *outputImageHandle)
Converts the given imageHandle to the specified outputPixelFormat. The pixel values are mapped from t...
PEAK_IPL_C_API PEAK_IPL_Image_ConvertToBufferWithFactorAndOffset(PEAK_IPL_IMAGE_HANDLE imageHandle, PEAK_IPL_PIXEL_FORMAT outputPixelFormat, double factor, double offset, uint8_t *outputImageBuffer, size_t outputImageBufferSize, PEAK_IPL_CONVERSION_MODE conversionMode, PEAK_IPL_IMAGE_HANDLE *outputImageHandle)
Converts the given imageHandle to the specified outputPixelFormat into an existing outputImageBuffer ...
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:55
PEAK_IPL_C_API PEAK_IPL_Image_ConvertToBufferFromInterval(PEAK_IPL_IMAGE_HANDLE imageHandle, PEAK_IPL_PIXEL_FORMAT outputPixelFormat, double start, double end, uint8_t *outputImageBuffer, size_t outputImageBufferSize, PEAK_IPL_CONVERSION_MODE conversionMode, PEAK_IPL_IMAGE_HANDLE *outputImageHandle)
Converts the given imageHandle to the specified outputPixelFormat into an existing outputImageBuffer....
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:405
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:60
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:303
PEAK_IPL_C_API PEAK_IPL_Image_GetHeight(PEAK_IPL_IMAGE_HANDLE imageHandle, size_t *height)
Queries the height of the given image.
int32_t PEAK_IPL_PIXEL_FORMAT
Definition peak_ipl_backend.h:173
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_ConvertToWithFactorAndOffset(PEAK_IPL_IMAGE_HANDLE imageHandle, PEAK_IPL_PIXEL_FORMAT outputPixelFormat, double factor, double offset, 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_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:259
Definition peak_ipl_backend.h:265
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