IDS peak ICV v1.2.0
Loading...
Searching...
No Matches
image.py
Go to the documentation of this file.
1# @package image
2
3from __future__ import annotations
4
5import ctypes
6from typing import Any, cast
7import math
8
9import numpy as np
10from ids_peak_ipl import ids_peak_ipl
11
13from ids_peak_common.datatypes.iimageview import IImageView
14from ids_peak_common.datatypes.metadata import Metadata
15from ids_peak_common.datatypes.pixelformat import PixelFormat, Channel
16
17from ids_peak_icv import lib_loader
19 peak_common_size,
20 peak_icv_image_handle,
21 peak_icv_image_info,
22 peak_icv_capture_information,
23 peak_icv_binning_factor,
24)
26 execute_and_map_return_codes,
27 check_init_for_classes_with_classmethods_only,
28 metadata_to_capture_information,
29 metadata_from_capture_information,
30 add_metadata_from_capture_information_to_metadata
31)
32from ids_peak_icv.exceptions import OutOfRangeException, NotSupportedException
33
34from typing import TYPE_CHECKING
35
36if TYPE_CHECKING:
37 from ids_peak_icv.datatypes.region import Region
38
39
40class Image:
41 """!
42 @brief
43 Image Class for working with algorithms.
44
45 @since ids_peak_icv 1.0
46 @ingroup ids_peak_icv_python_types
47 """
48
49 _data: np.ndarray
50
51 @classmethod
52 def create_from_pixel_format_and_size(cls, pixel_format: PixelFormat, size: Size) -> Image:
53 """!
54 @brief
55 Creates an instance of Image using a size.Size and a pixel format
56
57 @param size: Image size in pixels
58 @param pixel_format: Pixel format of the image
59 @return Returns an image instance.
60
61 @since ids_peak_icv 1.0
62 """
63
64 image_handle = peak_icv_image_handle()
65 image_size = peak_common_size(size.width, size.height)
66
67 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_Create,
68 ctypes.pointer(image_handle),
69 ctypes.c_int(pixel_format.value),
70 image_size)
71
72 return Image(_handle=image_handle)
73
74 @classmethod
75 def create_from_ids_peak_ipl_image(cls, ids_peak_ipl_image: ids_peak_ipl.Image) -> Image:
76 """!
77 @brief
78 Creates an instance of Image using a ids_peak_ipl image.
79
80 @param ids_peak_ipl_image: ids_peak_ipl image
81 @return Created an image instance.
82
83 @since ids_peak_icv 1.0
84 """
85 numpy_data = (np.array(ids_peak_ipl_image.DataView(), dtype=np.uint8) if
86 ids_peak_ipl_image.PixelFormat().IsPacked() else ids_peak_ipl_image.get_numpy())
87 image_info = peak_icv_image_info(
88 pixel_format=ids_peak_ipl_image.PixelFormat().PixelFormatName(),
89 size=peak_common_size(ids_peak_ipl_image.Width(), ids_peak_ipl_image.Height()),
90 buffer_size=ids_peak_ipl_image.ByteCount(),
91 buffer=numpy_data.ctypes.data_as(ctypes.POINTER(ctypes.c_uint8))
92 )
93 image_handle = peak_icv_image_handle()
94
95 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_CreateFromImageInfo,
96 ctypes.pointer(image_handle),
97 image_info,
98 ctypes.sizeof(image_info))
99 c_capture_information = peak_icv_capture_information(binning_factor=peak_icv_binning_factor(x=1, y=1),
100 time_stamp=ids_peak_ipl_image.Timestamp())
101 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_SetCaptureInformation, image_handle,
102 c_capture_information, ctypes.sizeof(c_capture_information))
103
104 return cls(_handle=image_handle, _ids_peak_ipl_image=ids_peak_ipl_image)
105
106 @classmethod
107 def create_from_np_array(cls, pixel_format: PixelFormat, size: Size, data: np.ndarray) -> Image:
108 """!
109 @brief
110 Creates an instance of Image using a PixelFormat, size.Size and numpy image buffer.
111
112 @param pixel_format: Pixel format of the image
113 @param size: Image size in pixels
114 @param data: Numpy array holding the buffer data
115
116 @return Created an image instance.
117
118 @exception OutOfRangeException: If the input array is 2D and the expected number of channels is not 1,
119 or if it is 3D and the channel count does not match, or if it has a number of dimensions other than 2 or 3.
120
121 @since ids_peak_icv 1.0
122 """
123
124 if pixel_format.is_packed:
126 "Creating an image from a packed format is not supported")
127
128 return cls._create_from_np_array(pixel_format, size, data)
129
130 @classmethod
131 def _create_from_np_array(cls, pixel_format: PixelFormat, size: Size, data: np.ndarray) -> Image:
132
133 if data.ndim == 2:
134 if pixel_format.number_of_channels != 1:
135 raise OutOfRangeException("Number of channels has to be 1")
136 elif data.ndim == 3:
137 if data.shape[2] != pixel_format.number_of_channels:
139 "Number of channels must be {}".format(pixel_format.number_of_channels))
140 elif data.ndim == 1:
141 pass
142 else:
143 raise OutOfRangeException("Numpy array has wrong dimension")
144
145 image_handle = peak_icv_image_handle()
146 image_info = peak_icv_image_info(
147 pixel_format=pixel_format.value,
148 size=peak_common_size(size.width, size.height),
149 buffer_size=data.size * data.itemsize,
150 buffer=data.ctypes.data_as(ctypes.POINTER(ctypes.c_uint8))
151 )
152
153 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_CreateFromImageInfo,
154 ctypes.pointer(image_handle),
155 image_info,
156 ctypes.sizeof(image_info))
157
158 return cls(_handle=image_handle, _data=data)
159
160 @classmethod
161 def create_from_file(cls, image_path: str, forced_pixel_format: PixelFormat | None = None) -> Image:
162 """!
163 @brief
164 Creates an Image from a file path.
165
166 This method loads an image from the given file path.
167
168 If a PixelFormat is provided via ``forced_pixel_format``,
169 the method attempts to interpret the file using that format.
170 If interpretation fails, an exception is raised.
171 Explicit conversion between image formats must be handled manually by the user.
172
173 The following image formats are supported:
174
175 - Bitmap (BMP)
176 - Joint Photographic Experts Group (JPEG)
177 - Portable Network Graphics (PNG)
178 - @htmlonly Tag Image File Format (TIFF)@endhtmlonly
179 (Only if ``forced_pixel_format`` is specified)
180 - Raw Binary Format (RAW)
181
182 ### Supported image and pixel formats
183
184 #### BMP:
185 @supportedPixelformats{ImageLoad_BMP}
186 #### JPEG:
187 @supportedPixelformats{ImageLoad_JPEG}
188 #### PNG:
189 @supportedPixelformats{ImageLoad_PNG}
190 #### RAW:
191 If ``forced_pixel_format`` is ``None`` any raw image can be loaded.
192
193 If ``forced_pixel_format`` is specified, only the following formats are supported
194 and must match the format used when saving:
195 @supportedPixelformats{ImageLoad_RAW_WithPixelFormat}
196
197 See the @ref concept_type_pixel_format for a detailed description of the pixel formats.
198
199 @param image_path: File path on disk, pointing to an image.
200 @param forced_pixel_format: Pixel format the loaded image is forced to use.
201 @return The loaded Image as a new instance
202
203 @since ids_peak_icv 1.0
204 """
205
206 c_image_path = image_path.encode('utf-8')
207 c_handle = peak_icv_image_handle()
208
209 if forced_pixel_format is None:
210 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_CreateFromFile,
211 ctypes.pointer(c_handle), ctypes.c_char_p(c_image_path))
212 else:
213 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_CreateFromFileWithPixelFormat,
214 ctypes.pointer(c_handle), ctypes.c_char_p(c_image_path),
215 ctypes.c_int(forced_pixel_format.value))
216 return cls(_handle=c_handle)
217
218 @classmethod
219 def create_from_image_view(cls, image_view: IImageView) -> Image:
220 """!
221 @brief
222 Creates an instance of Image using an IImageView interface.
223
224 @param image_view: An object implementing the IImageView interface,
225 which can be constructed from a buffer provided by a camera.
226 @return A new `Image` instance created from the given image view.
227
228 @since ids_peak_icv 1.0
229 """
230
231 image = cls._create_from_np_array(image_view.pixel_format, image_view.size, image_view.to_numpy_array())
232 image.metadata = image_view.metadata
233 return image
234
235 def __init__(self, *args: Any, **kwargs: Any) -> None:
236 """!
237 @brief
238 In order to create an Image, please refer to the classmethods.
239
240 @since ids_peak_icv 1.0
241 """
242 self._handle_handle = check_init_for_classes_with_classmethods_only(self.__class__.__name__,
243 peak_icv_image_handle, *args, **kwargs)
244
245 if len(kwargs):
246 self._handle_handle = kwargs["_handle"]
247
248 image_info = peak_icv_image_info()
249 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_GetInfo,
250 self._handle_handle, ctypes.pointer(image_info), ctypes.sizeof(image_info))
251
252 self._metadata: Metadata | None = None
253
254 self._pixel_format = PixelFormat(image_info.pixel_format)
255 self._size = Size(image_info.size.width, image_info.size.height)
256
257 num_channels = self._pixel_format.number_of_channels
258 _shape = [int(self._size.height), int(self._size.width)]
259 if num_channels > 1:
260 _shape.append(num_channels)
261
262 self._ids_peak_ipl_image = kwargs["_ids_peak_ipl_image"] if "_ids_peak_ipl_image" in kwargs else None
263
264 if "_data" in kwargs:
265 self._data = kwargs["_data"]
266 self._raw_data = None
267 else:
268 packed_or_yuv = (self._pixel_format.is_packed or
269 self._pixel_format.has_channel(Channel.CHROMA_U))
270
271 # Create a numpy array from the ctypes buffer with dtype uint8
272 self._raw_data = np.ctypeslib.as_array(image_info.buffer, shape=(
274 self._pixel_format.allocated_bits_per_pixel,
275 packed_or_yuv),))
276
277 if packed_or_yuv:
278 self._data = self._raw_data.view(dtype=np.uint8)
279 else:
280 self._data = self._raw_data.view(dtype=self._pixel_format.numpy_dtype)
281 self._data = self._data.reshape(_shape)
282
283 def __del__(self) -> None:
284 """!
285 @brief
286 Destructor for Image class.
287 """
288 if hasattr(self, '_handle'):
289 lib_loader.dll().peak_icv_Image_Destroy(self._handle_handle)
290
291 def save(self, output_file_path: str) -> None:
292 """!
293 @brief
294 Saves an instance to a file on disk. The type is specified by the given file ending in file name.
295
296 The following image formats are supported:
297 - Portable Network Graphics (PNG)
298 - Bitmap (BMP)
299 - Joint Photographic Experts Group (JPEG)
300 - @htmlonly Tag Image File Format@endhtmlonly (TIFF)
301 - Raw Binary Format (RAW)
302
303 The compression settings for PNG and JPEG images are as follows:
304 For JPEG, the image quality is set to 75%, and for PNG, the image quality is set to 100%.
305
306 @note The file extension for the given file name must match the specified image format when an image is saved.
307 Otherwise, an error will occur when saving an image. The file extensions are:
308 - PNG: .png
309 - BMP: .bmp
310 - JPEG: .jpeg
311 - TIFF: .tiff
312 - RAW: .raw
313
314 ### Supported image and pixel formats
315
316 #### BMP:
317 @supportedPixelformats{ImageSave_BMP}
318 #### JPEG:
319 @supportedPixelformats{ImageSave_JPEG}
320 #### PNG:
321 @supportedPixelformats{ImageSave_PNG}
322 #### TIFF:
323 @supportedPixelformats{ImageSave_TIFF}
324 #### RAW:
325 @supportedPixelformats{ImageSave_RAW}
326
327 See the @ref concept_type_pixel_format for a detailed description of the pixel formats.
328
329 @param output_file_path: The path of the file to store the image to disk.
330
331 @since ids_peak_icv 1.0
332 """
333 c_output_file_path = output_file_path.encode('utf-8')
334 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_SaveToFile, self._handle_handle,
335 ctypes.c_char_p(c_output_file_path))
336
337 @property
338 def size(self) -> Size:
339 """!
340 @brief
341 Provides the size.Size of the image.
342
343 @return Image size in pixels
344
345 @since ids_peak_icv 1.0
346 """
347 return self._size
348
349 @property
350 def width(self) -> int:
351 """!
352 @brief
353 Provides the width of the image.
354
355 @return Image width in pixels
356
357 @since ids_peak_icv 1.0
358 """
359 return int(self.size.width)
360
361 @property
362 def height(self) -> int:
363 """!
364 @brief
365 Provides the height of the image.
366
367 @return Image height in pixels
368
369 @since ids_peak_icv 1.0
370 """
371 return int(self.size.height)
372
373 def to_numpy_array(self, copy: bool = True) -> np.ndarray:
374 """!
375 @brief
376 Provides a numpy representation of the image.
377
378 Note that the image is copied by default and the caller must not take care of the original Instance being still
379 available.
380
381 @param copy: True: The image is copied, False: The image only references the internal memory.
382 @return Image data as a numpy array. Shape is [height, width] for single channel images.
383 Shape is [height, width, number of channels] for multichannel images.
384
385 @since ids_peak_icv 1.0
386 """
387
388 if copy:
389 return cast(np.ndarray, self._data.copy())
390
391 return self._data
392
393 def convert_pixel_format(self, pixel_format: PixelFormat) -> Image:
394 """!
395 @brief
396 Converts the image to a different pixel format.
397
398 If the input image has the same pixel format as the specified pixel format parameter,
399 the image will be copied.
400
401 **Restrictions**:
402 - Conversion to Bayer formats is only supported from a bayer format with the same pattern,
403 e.g. from BayerRG10p to BayerRG10 or BayerRG8.
404 - Conversion to packed formats is not supported.
405 - Conversions from RGB or BGR formats to RGBa or BGRa formats is not supported.
406 - RGBa and BGRa formats support only conversions into different bit depths of the same channel layout
407 or to Mono formats.
408 - Confidence and Coord3D formats can only be converted to other bit depths of the same format type.
409
410 @note
411 For a full list of supported conversions see \ref concept_supported_pixel_format_conversion.
412
413 @param pixel_format: The target pixel format.
414
415 @return A new Image with the target pixel format.
416
417 @since ids_peak_icv 1.0
418 """
419
420 output_image_handle = peak_icv_image_handle()
421 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_Create,
422 ctypes.pointer(output_image_handle),
423 ctypes.c_int(pixel_format.value),
424 peak_common_size(self._size.width, self._size.height))
425
426 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_ConvertPixelFormat,
427 self._handle_handle, ctypes.c_int(pixel_format.value),
428 output_image_handle)
429
430 return Image(_handle=output_image_handle)
431
432 def convert_pixel_format_with_factor(self, pixel_format: PixelFormat, factor: float) -> Image:
433 """!
434 @brief
435 Converts an image into another pixel format with a factor multiplied to every pixel.
436
437 Supported conversions:
438 From PixelFormat::Coord3D_C8 or PixelFormat::Coord3D_C16 to PixelFormat::Coord3D_C32f
439
440 @param pixel_format: The target pixel format.
441 @param factor: The multiplication factor.
442 @return A new instance of Image with the target pixel format.
443
444 @since ids_peak_icv 1.1
445 """
446
447 output_image_handle = peak_icv_image_handle()
448 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_Create,
449 ctypes.pointer(output_image_handle),
450 ctypes.c_int(pixel_format.value),
451 peak_common_size(self._size.width, self._size.height))
452
453 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_ConvertPixelFormatWithFactor,
454 self._handle_handle, ctypes.c_int(pixel_format.value), ctypes.c_double(factor),
455 output_image_handle)
456
457 return Image(_handle=output_image_handle)
458
459 @property
460 def region(self) -> Region:
461 """!
462 @brief
463 Retrieves the region.Region associated with the specified image_handle.
464 @return The image region.
465
466 @since ids_peak_icv 1.0
467 """
468 from ids_peak_icv.datatypes.region import Region
469
470 region = Region()
471 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_GetRegion, self._handle_handle,
472 ctypes.pointer(region._handle))
473 return region
474
475 @region.setter
476 def region(self, region: Region) -> None:
477 """!
478 @brief
479 Updates the region.Region on the image.
480
481 Sets a region of interest (ROI) for the specified image handle,
482 which defines a sub-area of the image where operations or analyses are focused.
483 Any points in the region that fall outside the bounds of the image are automatically discarded (clipped).
484
485 @param region: The region to be set.
486
487 @since ids_peak_icv 1.0
488 """
489 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_SetRegion, self._handle_handle,
490 region._handle)
491
492 def reset_region(self) -> None:
493 """!
494 @brief
495 Resets the region.Region on the image to the complete image.
496
497 @since ids_peak_icv 1.0
498 """
499 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_ResetRegion, self._handle_handle)
500
501 @property
502 def metadata(self) -> Metadata:
503 """!
504 @brief
505 Retrieves the metadata.Metadata of an image which contains information about
506 the image capture settings.
507
508 @return The metadata of the image.
509
510 @since ids_peak_icv 1.0
511 """
512
513 if self._metadata is not None:
514 return self._metadata
515
516 c_capture_information = peak_icv_capture_information()
517 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_GetCaptureInformation, self._handle_handle,
518 ctypes.pointer(c_capture_information), ctypes.sizeof(c_capture_information))
519
520 self._metadata = metadata_from_capture_information(c_capture_information)
521 return self._metadata
522
523 @metadata.setter
524 def metadata(self, metadata: Metadata) -> None:
525 """!
526 @brief
527 Updates the metadata.Metadata of an image which is used to store and
528 manage capture settings.
529
530 @param metadata: The metadata to be updated.
531
532 @since ids_peak_icv 1.0
533 """
534 c_capture_information = metadata_to_capture_information(metadata, size=self._size)
535
536 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_SetCaptureInformation, self._handle_handle,
537 c_capture_information, ctypes.sizeof(c_capture_information))
538 self._metadata = add_metadata_from_capture_information_to_metadata(metadata, c_capture_information)
539
540 def subtract(self, subtrahend: Image) -> Image:
541 """!
542 @brief
543 Subtracts the specified subtrahend image pixelwise from the current image and returns the resulting image.
544
545 This function performs a pixelwise subtraction of the given subtrahend image from the current image.
546 The resulting image is returned as a new `Image` object.
547 The operation requires that both images have the same pixel format and dimensions.
548
549 @param subtrahend: The image to subtract from the current image.
550 @return The resulting image after pixelwise subtraction.
551
552 @since ids_peak_icv 1.0
553 """
554 difference = Image.create_from_pixel_format_and_size(self._pixel_format, self.size)
555 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_Subtract, self._handle_handle,
556 subtrahend._handle, difference._handle)
557 return difference
558
559 def __sub__(self, subtrahend: Image) -> Image:
560 """!
561 @brief
562 Subtracts the specified subtrahend image pixelwise from the current image and returns the resulting image.
563
564 This function performs a pixelwise subtraction of the given subtrahend image from the current image.
565 The resulting image is returned as a new `Image` object.
566 The operation requires that both images have the same pixel format and dimensions.
567
568 @param subtrahend: The image to subtract from the current image.
569 @return The resulting image after pixelwise subtraction.
570
571 @since ids_peak_icv 1.0
572 """
573 return self.subtract(subtrahend)
574
575 def __eq__(self, other: object) -> bool:
576 if not isinstance(other, Image):
577 return False
578 if self._handle_handle == other._handle:
579 return True
580 if self.size != other.size:
581 return False
582 if self._pixel_format != other._pixel_format:
583 return False
584 if self.regionregion != other.region:
585 return False
586
587 is_equal = ctypes.c_bool()
588 execute_and_map_return_codes(lib_loader.dll().peak_icv_Image_Compare, self._handle_handle, other._handle,
589 ctypes.pointer(is_equal))
590
591 return is_equal.value
592
593 @property
594 def pixel_format(self) -> PixelFormat:
595 return self._pixel_format
596
597
598def _get_byte_size(size: Size, bits_per_pixel: int, packed_or_yuv: bool) -> int:
599 """!
600 @brief
601 Calculate the byte size of an image buffer for a given size and pixel format.
602
603 @param size: The image dimensions (width, height) in pixels.
604 @param bits_per_pixel: The number of storage bits per pixel for the pixel format.
605 @param packed_or_yuv: If True, assumes packed or yuv format (truncate bits to full bytes).
606 If False, assumes other format (round up to nearest byte).
607 @return The byte size of the buffer.
608 """
609 total_bits = int(size.width) * int(size.height) * bits_per_pixel
610 if packed_or_yuv:
611 return math.ceil(total_bits / 8)
612 else:
613 return (total_bits + 7) // 8
614
615
616def _check_and_get_icv_image(image_var: Any) -> Any:
617 if isinstance(image_var, ids_peak_ipl.Image):
618 return Image.create_from_ids_peak_ipl_image(image_var)
619
620 return image_var
621
622
623def _check_icv_image(image_var: Any) -> Any:
624 if not isinstance(image_var, Image):
626 "Parameter images has to be a numpy array of ids_peak_icv images.")
627
628 return image_var
A size consists of width and height where width and height have to be greater than or equal to zero.
Definition size.py:9
Enum listing all supported pixel formats and their internal IDs.
Image Class for working with algorithms.
Definition image.py:40
Region region(self)
Retrieves the region.Region associated with the specified image_handle.
Definition image.py:460
Image create_from_ids_peak_ipl_image(cls, ids_peak_ipl.Image ids_peak_ipl_image)
Creates an instance of Image using a ids_peak_ipl image.
Definition image.py:75
Image create_from_np_array(cls, PixelFormat pixel_format, Size size, np.ndarray data)
Creates an instance of Image using a PixelFormat, size.Size and numpy image buffer.
Definition image.py:107
None region(self, Region region)
Updates the region.Region on the image.
Definition image.py:476
Image __sub__(self, Image subtrahend)
Subtracts the specified subtrahend image pixelwise from the current image and returns the resulting i...
Definition image.py:559
None __init__(self, *Any args, **Any kwargs)
In order to create an Image, please refer to the classmethods.
Definition image.py:235
None save(self, str output_file_path)
Saves an instance to a file on disk.
Definition image.py:291
Image create_from_pixel_format_and_size(cls, PixelFormat pixel_format, Size size)
Creates an instance of Image using a size.Size and a pixel format.
Definition image.py:52
bool __eq__(self, object other)
Definition image.py:575
None reset_region(self)
Resets the region.Region on the image to the complete image.
Definition image.py:492
Image convert_pixel_format_with_factor(self, PixelFormat pixel_format, float factor)
Converts an image into another pixel format with a factor multiplied to every pixel.
Definition image.py:432
PixelFormat pixel_format(self)
Definition image.py:594
None __del__(self)
Destructor for Image class.
Definition image.py:283
Metadata metadata(self)
Retrieves the metadata.Metadata of an image which contains information about the image capture settin...
Definition image.py:502
int height(self)
Provides the height of the image.
Definition image.py:362
Image _create_from_np_array(cls, PixelFormat pixel_format, Size size, np.ndarray data)
Definition image.py:131
Image convert_pixel_format(self, PixelFormat pixel_format)
Converts the image to a different pixel format.
Definition image.py:393
Size size(self)
Provides the size.Size of the image.
Definition image.py:338
Image subtract(self, Image subtrahend)
Subtracts the specified subtrahend image pixelwise from the current image and returns the resulting i...
Definition image.py:540
Image create_from_file(cls, str image_path, PixelFormat|None forced_pixel_format=None)
Creates an Image from a file path.
Definition image.py:161
Image create_from_image_view(cls, IImageView image_view)
Creates an instance of Image using an IImageView interface.
Definition image.py:219
np.ndarray to_numpy_array(self, bool copy=True)
Provides a numpy representation of the image.
Definition image.py:373
int width(self)
Provides the width of the image.
Definition image.py:350
Represents a region consisting of a set of points in the image plane.
Definition region.py:29
Thrown when a requested operation is not implemented or supported.
Definition exceptions.py:71
Thrown when a value is outside the allowed range.
int _get_byte_size(Size size, int bits_per_pixel, bool packed_or_yuv)
Calculate the byte size of an image buffer for a given size and pixel format.
Definition image.py:598
Any _check_and_get_icv_image(Any image_var)
Definition image.py:616
Any _check_icv_image(Any image_var)
Definition image.py:623