@@ -530,11 +530,87 @@ class Camera {
530
530
* @return int 0 if no motion is detected, non-zero if motion is detected
531
531
*/
532
532
int motionDetected ();
533
+
534
+ /* *
535
+ * @brief Zoom to a specific region of the image by setting the zoom window size and its position.
536
+ * The camera resolution must be set to a higher resolution than the zoom resolution for this to work.
537
+ * The zooming is done by cropping a higher resolution image to the zoom window.
538
+ * @note This function is currently only supported by the GC2145 sensor on the Arduino Nicla Vision.
539
+ * @param zoom_resolution The resolution of the zoom window.
540
+ * The resolution must be one of the following:
541
+ * - CAMERA_R160x120
542
+ * - CAMERA_R320x240
543
+ * - CAMERA_R320x320
544
+ * - CAMERA_R640x480
545
+ * - CAMERA_R800x600
546
+ * If the desired resolution doesn't fit in the built-in memory,
547
+ * the framebuffer should be allocated on external RAM.
548
+ * @param zoom_x The x position of the zoom window.
549
+ * The value must be lower or equal to the width of the image minus the width of the zoom window.
550
+ * @param zoom_y The y position of the zoom window.
551
+ * The value must be lower or equal to the height of the image minus the height of the zoom window.
552
+ * @return 0 on success, -1 on failure.
553
+ */
533
554
int zoomTo (int32_t zoom_resolution, uint32_t zoom_x, uint32_t zoom_y);
555
+
556
+ /* *
557
+ * @brief Zoom to the center of the image by setting the zoom window size.
558
+ *
559
+ * @param zoom_resolution The resolution of the zoom window.
560
+ * The resolution must be one of the following:
561
+ * - CAMERA_R160x120
562
+ * - CAMERA_R320x240
563
+ * - CAMERA_R320x320
564
+ * - CAMERA_R640x480
565
+ * - CAMERA_R800x600
566
+ * If the desired resolution doesn't fit in the built-in memory,
567
+ * the framebuffer should be allocated on external RAM.
568
+ * @return 0 on success, -1 on failure.
569
+ */
534
570
int zoomToCenter (int32_t zoom_resolution);
571
+
572
+ /* *
573
+ * @brief Flips the camera image vertically.
574
+ *
575
+ * @param flip_enable Set to true to enable vertical flip, false to disable.
576
+ * @return 0 on success, -1 on failure.
577
+ */
535
578
int setVerticalFlip (bool flip_enable);
579
+
580
+ /* *
581
+ * @brief Mirrors the camera image horizontally.
582
+ *
583
+ * @param mirror_enable Set to true to enable horizontal mirror, false to disable.
584
+ * @return 0 on success, -1 on failure.
585
+ */
536
586
int setHorizontalMirror (bool mirror_enable);
587
+
588
+ /* *
589
+ * @brief Get the width of the current camera resolution.
590
+ * This can for example be used to calculate the zoom window position and size.
591
+ * In the following example, the camera is zoomed to the top right side of the image:
592
+ * @code
593
+ * // Calculate the zoom window position
594
+ * uint32_t max_zoom_x = camera.getResolutionWidth() - 320;
595
+ * // Zoom to the calculated position and size
596
+ * camera.zoomTo(CAMERA_R320x240, max_zoom_x, 0);
597
+ * @endcode
598
+ * @return uint32_t The width of the camera resolution.
599
+ */
537
600
uint32_t getResolutionWidth ();
601
+
602
+ /* *
603
+ * @brief Get the height of the current camera resolution.
604
+ * This can for example be used to calculate the zoom window position and size.
605
+ * In the following example, the camera is zoomed to the bottom left side of the image:
606
+ * @code
607
+ * // Calculate the zoom window position
608
+ * uint32_t max_zoom_y = camera.getResolutionHeight() - 240;
609
+ * // Zoom to the calculated position and size
610
+ * camera.zoomTo(CAMERA_R320x240, 0, max_zoom_y);
611
+ * @endcode
612
+ * @return uint32_t The height of the camera resolution.
613
+ */
538
614
uint32_t getResolutionHeight ();
539
615
540
616
/* *
0 commit comments