This repository has been archived on 2025-06-01. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
compLIB/docs/source/lib/classes/Opencv.rst
2023-02-10 13:44:28 +01:00

79 lines
2.3 KiB
ReStructuredText

.. _lib_camera:
Camera und OpenCV
*******************
Dokumentation des Camera Moduls
================================
.. autoclass:: compLib.Camera.Marker
:members:
.. autoclass:: compLib.Camera.Camera
:members:
Beispiele
=========
Bild Anzeigen
---------------
Das folgende Programm fragt Bilder von der Kamera ab und schickt sie an den Webserver, der im Hintergrund läuft. Der Benutzer kann dann auf die Webseite: http://raspi_ip:9898 gehen und die Ausgabe der Kamera sehen.
.. code-block:: python
from compLib.Camera import *
camera = Camera()
while True:
image = camera.get_frame()
camera.publish_frame(image)
ArUco Marker Erkennen
------------------------
In diesem Programm werden die ArUco Marker, die sich am Spielfeld befinden, erkannt. Diese "QR-Code" ähnlichen Marker finden sich in den Logistikzonen und können dazu verwendet werden zu erkennen, wo der Roboter hinfahren sollt etc.
.. code-block:: python
from compLib.Camera import *
camera = Camera()
while True:
image = camera.get_frame()
markers, image = camera.detect_markers_midpoint(image)
print(markers)
print("-----------------")
camera.publish_frame(image)
Hier ist z.B. der ArUco Marker mit der ID 0. Führe das Programm aus und lass den Roboter auf den Bildschirm schauen. Das Programm sollte die 2D Position ausgeben, welcher der ArUco Marker (genauer sein Mittelpunkt) im Camera Bild hat.
|ArucoExample|
.. |ArucoExample| image:: images/6x6_1000-0.png
Um die Positionen zu verarbeiten, muss dann nur noch das "markers" array durchgegangen werden. Das könnte z.B. so gemacht werden:
.. code-block:: python
from compLib.Camera import *
camera = Camera()
while True:
image = camera.get_frame()
markers, image = camera.detect_markers_midpoint(image)
print(markers)
print("-----------------")
for marker in markers:
print(f"Marker mit der id: {marker.id}")
print(f"Ist auf der X Position: {marker.x}")
print(f"und auf der Y Position: {marker.y}")
print("-----------------")
camera.publish_frame(image)
Wichtig ist noch zu beachten, dass die X und Y Positionen ihren Ursprung in der linken oberen Ecke des Bildes haben. D.h. die Position (0,0) ist im oberen linken Bildrand.