{"id":6097,"date":"2023-10-06T10:47:14","date_gmt":"2023-10-06T10:47:14","guid":{"rendered":"https:\/\/sites.hslu.ch\/werkstatt\/?p=6097"},"modified":"2023-11-15T16:29:38","modified_gmt":"2023-11-15T16:29:38","slug":"open-mv-cam","status":"publish","type":"post","link":"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/","title":{"rendered":"Open MV Cam"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_section el_class=&#187;dkw-section-lead&#187;][vc_row][vc_column width=&#187;2\/3&#8243; offset=&#187;vc_col-sm-offset-2&#8243;][vc_column_text]Die OpenMV Cam ist wie ein superstarkes Arduino Board mit einer Kamera. Dieses Kameraboard kannst du in Python programmieren. Es vereinfacht es dir, Machine-Vision-Algorithmen zu testen, so dass du unter anderem z.B. Farben verfolgen, Gesichter erkennen, Objekte detektieren kannst. Auch ist es M\u00f6glich \u00fcber I\/O-Pins wie beim physical Computing andere elektrische Teile anzusteuern. So du kannst du einen Mikrokontroller mit einem visuellen Sensor nutzen.[\/vc_column_text][\/vc_column][\/vc_row][\/vc_section][vc_section el_class=&#187;dkw-section-content&#187;][vc_row][vc_column width=&#187;1\/3&#8243; el_class=&#187;dkw-col-toc&#187; offset=&#187;vc_col-lg-3&#8243;][vc_column_text]<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#Prolog\" >Prolog<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#Was_ist_Machine_Vision\" >Was ist Machine Vision?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#Anwendungsbeispiele\" >Anwendungsbeispiele<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#OpenMV_Cam\" >OpenMV Cam<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#Hardware\" >Hardware<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#Spezifikationen\" >Spezifikationen<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#Software\" >Software<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#OpenMV_IDE\" >OpenMV IDE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#Erste_Versuche\" >Erste Versuche<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#Beispiele_in_der_IDE\" >Beispiele in der IDE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/sites.hslu.ch\/werkstatt\/open-mv-cam\/#Micropython_Dokumentation\" >Micropython Dokumentation<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n[\/vc_column_text][\/vc_column][vc_column width=&#187;2\/3&#8243; el_class=&#187;dkw-col-content&#187; offset=&#187;vc_col-lg-6&#8243;][vc_column_text]<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Prolog\"><\/span>Prolog<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Die OpenMV Cam ist eine Machinevision Kamera die es erlaubt einen visuellen Sensor selber zu trainieren. In diesem Recipie gehen wir durch was f\u00fcr Software du brauchst um deine Cam zu Programmieren, schauen uns einige Beispiele aus der IDE an.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Was_ist_Machine_Vision\"><\/span>Was ist Machine Vision?<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Machine Vision \/ Computer Vision versucht die von Kameras aufgenommenen Bilder auf unterschiedlichste Art und Weise zu verarbeiten und zu analysieren. In einfachen Worten: Man versucht dem Computer \u00fcber Kameras das &#171;sehen&#187; beizubringen oder zumindest etwas visuelles zu erkennen. Je nach Programm, dass auf dieser Kamera genutzt wird, kann sie &#171;erkennen&#187; ob sich in ihrem Blickfeld zum Beispiel ein Objekt, eine bestimmte Farbe, ein Gesicht oder ein QR oder Bar Code befindet. Basierend auf dieser Analyse des Bildes kann dann etwas ausgel\u00f6st werden, z.B. k\u00f6nnte ein Gesicht erkannt werden, ein QR Code gelesen werden usw. Diese Technologie wird h\u00e4ufig ganz unterschiedlich genutzt, um einige Beispiele zu nennen:<\/p>\n<ul>\n<li><strong>zu Messen<\/strong>:\n<ul>\n<li>Qualit\u00e4tskontrollen in Produktionen durchf\u00fchren (sind alle Bauteile an diesem Produkt angebracht \/ enthalten, hat es die richtigen Dimensionen ect.)<\/li>\n<li>Welche Farbe hat ein Objekt vor der Kamera<\/li>\n<\/ul>\n<\/li>\n<li><strong>zu Z\u00e4hlen:<\/strong>\n<ul>\n<li>Lagerbest\u00e4nde \u00fcberpr\u00fcfen (wieviele Kisten stehen im Regal),<\/li>\n<li>Personen oder Autos zu z\u00e4hlen (wieviele Personen \/ Autos passieren einen Blickwinkel)<\/li>\n<\/ul>\n<\/li>\n<li><strong>zu Detektieren \/ Lokalisieren:<\/strong>\n<ul>\n<li>Ist eine Person, ein Tier oder ein Objekt im Bild wenn ja wo?<\/li>\n<li>Auch zur Identifikation von Personen werden solche wenn auch weitaus komplexere Algorhitmen eingesetzt.<\/li>\n<\/ul>\n<\/li>\n<li><strong>zu Dekodieren:<\/strong>\n<ul>\n<li>Barcode, QR Code, Analoge Ziffern z.B. Stromz\u00e4hler auslesen<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Anwendungsbeispiele\"><\/span>Anwendungsbeispiele<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Um dir ein paar wenige Beispiele f\u00fcr die Anwendung von Machine Vision Algorithmen konkrete Beispiele zu geben: Befindet sich ein vorher festgelegtes und trainiertes Objekt im Blickwinkel einer Kamera kann unterschiedliches ausgel\u00f6st werden. z.B. k\u00f6nnten <a href=\"https:\/\/www.frontiersin.org\/articles\/10.3389\/fpls.2020.00510\/full\">Erntemaschinen<\/a> Fr\u00fcchte an Pflanzen lokalisieren und Pfl\u00fccken, ein <a href=\"https:\/\/www.youtube.com\/watch?v=6wIswIpSw04\">Legodetektor<\/a>, der das richtige Teil in einem Haufen Legos finden, <a href=\"https:\/\/driesdepoorter.be\/borderbirds\/\">V\u00f6gel beim Grenz\u00fcberflug zu detektieren<\/a> oder <a href=\"https:\/\/adam.harvey.studio\/vframe\/\">illegal eingesetzte Munition in Kriegsgebieten auf Bildern<\/a> zu detektieren.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"OpenMV_Cam\"><\/span>OpenMV Cam<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Die Einsatzgebiete f\u00fcr Machine Vision sind sehr breit und k\u00f6nnen in die unterschiedlichsten Richtungen genutzt werden. Das Tolle an der OpenMV Cam ist, dass sie dir einen relativ einfachen Einstieg in solch eine Technologie erm\u00f6glicht.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Hardware\"><\/span>Hardware<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6114\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/cam-v5-pinout_296b9ad8-e9c7-435d-aa61-674be04c8294-1000x563.webp\" alt=\"\" width=\"1000\" height=\"563\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/cam-v5-pinout_296b9ad8-e9c7-435d-aa61-674be04c8294-1000x563.webp 1000w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/cam-v5-pinout_296b9ad8-e9c7-435d-aa61-674be04c8294-768x432.webp 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/cam-v5-pinout_296b9ad8-e9c7-435d-aa61-674be04c8294-1536x864.webp 1536w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/cam-v5-pinout_296b9ad8-e9c7-435d-aa61-674be04c8294-848x477.webp 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/cam-v5-pinout_296b9ad8-e9c7-435d-aa61-674be04c8294-1140x641.webp 1140w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/cam-v5-pinout_296b9ad8-e9c7-435d-aa61-674be04c8294-1170x658.webp 1170w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/cam-v5-pinout_296b9ad8-e9c7-435d-aa61-674be04c8294-1920x1080.webp 1920w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/cam-v5-pinout_296b9ad8-e9c7-435d-aa61-674be04c8294-600x338.webp 600w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/cam-v5-pinout_296b9ad8-e9c7-435d-aa61-674be04c8294.webp 2048w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/>Die OpenMV Cam eine Kamera die je nach Modell ausgetauscht werden kann im MediaDock haben wir die Standard Kamera und eine FLIR Infrarotkamera die du nutzen kannst. An der Seite siehst du die Pins der Kamera diese k\u00f6nnen genutzt werden um wie bei einem Arduino Board oder einem Raspberry Pi um eine Kommunikation mit externen Komponenten (z.B. Motoren, andere Sensoren ect.) herzustellen.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Spezifikationen\"><\/span>Spezifikationen<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die detaillierten Spezifikationen zu den Kameras die wir im MediaDock haben findest du hier:<\/p>\n<p><a href=\"https:\/\/openmv.io\/products\/openmv-cam-h7-plus\">OpenMV Cam H7 Plus<\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Software\"><\/span>Software<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"OpenMV_IDE\"><\/span>OpenMV IDE<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>In der OpenMV <a href=\"https:\/\/de.wikipedia.org\/wiki\/Integrierte_Entwicklungsumgebung\">IDE<\/a> kannst du die Programme schreiben und testen. Die Programmiersprache die f\u00fcr die Cam genutzt wird ist Python 3. In der IDE stehen dir wie auch in der Arduino Library verschiedene Beispiele zur Verf\u00fcgung. Die IDE kann hier kostenlos herunter geladen werden:<\/p>\n<ul>\n<li><a href=\"https:\/\/openmv.io\/pages\/download\">https:\/\/openmv.io\/pages\/download<\/a><\/li>\n<\/ul>\n<h4><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6115\" src=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/openmv-ide.webp\" alt=\"\" width=\"986\" height=\"693\" srcset=\"https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/openmv-ide.webp 986w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/openmv-ide-768x540.webp 768w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/openmv-ide-848x596.webp 848w, https:\/\/sites.hslu.ch\/werkstatt\/wp-content\/uploads\/sites\/13\/2023\/09\/openmv-ide-600x422.webp 600w\" sizes=\"auto, (max-width: 986px) 100vw, 986px\" \/><\/h4>\n<h4><span class=\"ez-toc-section\" id=\"Erste_Versuche\"><\/span>Erste Versuche<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Dieses Video bietet einen guten Startpunkt um erste versuche mit der OpenMV Cam zu starten.[\/vc_column_text][vc_video link=&#187;<a href=\"https:\/\/youtu.be\/h0u0mXCTDAk?feature=shared&#187;%5D%5Bvc_column_text%5D\" rel=\"nofollow\">https:\/\/youtu.be\/h0u0mXCTDAk?feature=shared&#187;%5D%5Bvc_column_text%5D<\/a><\/p>\n<h4><span class=\"ez-toc-section\" id=\"Beispiele_in_der_IDE\"><\/span>Beispiele in der IDE<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Meisten Beispiele findest du direkt in der IDE im Menupunkt: Datei &gt; Examples.<\/p>\n<p>Die OpenMV Cam kann unter anderem f\u00fcr die folgenden Dinge verwendet werden (mehr in Zukunft). Detailliertere Infos und Videos findest du auf dieser Seite unter Applications: <a href=\"https:\/\/openmv.io\/products\/openmv-cam-h7-plus\">https:\/\/openmv.io\/products\/openmv-cam-h7-plus<\/a><\/p>\n<ul>\n<li>TensorFlow Lite for Microcontrollers Support\n<ul>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=YKwVope5RsU\">Edge Impulse<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=2xOxaPfdg2Q\">Frame Differencing<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=h9VoDcROkxc\">Color Tracking<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=h9VoDcROkxc\">Marker Tracking<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=Lmuiojo0N4A\">Face Detection<\/a><\/li>\n<li>Eye Tracking<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=hdlU92c6ny0\">Person Detection<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=9dFAwHfGPw4\">Optical Flow<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=mcIrKIMWhzs\">QR Code Detection\/Decoding<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=PffDblwNshM\">Data Matrix Detection\/Decoding<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=E4uIF3-0XOU\">Linear Barcode Decoding<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=keb0B11zj5g\">AprilTag Tracking<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=oXexWgi3ldg\">Line Detection<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=1M6uOoHYN9o\">Circle Detection<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=zRoprce5W_Y\">Rectangle Detection<\/a><\/li>\n<li>Template Matching<\/li>\n<li>Image Capture<\/li>\n<li>Video Recording<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Micropython_Dokumentation\"><\/span>Micropython Dokumentation<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Dokumentation findest du hier:<\/p>\n<p><a href=\"https:\/\/docs.openmv.io\/library\/omv.tf.html\">https:\/\/docs.openmv.io\/library\/omv.tf.html<\/a>[\/vc_column_text][\/vc_column][vc_column width=&#187;1\/3&#8243; el_class=&#187;dkw-col-micro&#187; offset=&#187;vc_col-lg-3&#8243;][\/vc_column][\/vc_row][\/vc_section][vc_section el_class=&#187;dkw-dontprint&#187;][vc_row disable_element=&#187;yes&#187;][vc_column][vc_column_text]\u2014 \u2014 \u2014 INFO: In beiden nachfolgenden Post Grids die passenden Recipies und die passenden Talks\u00a0 ausw\u00e4hlen \u2014 \u2014 \u2014<br \/>\n[\/vc_column_text][\/vc_column][\/vc_row][vc_row][vc_column][vc_column_text]<\/p>\n<h2>Passende Tools<\/h2>\n<p>[\/vc_column_text][vc_basic_grid post_type=&#187;ids&#187; element_width=&#187;2&#8243; gap=&#187;10&#8243; item=&#187;517&#8243; grid_id=&#187;vc_gid:1700065753875-118e36c0-59c0-8&#8243; include=&#187;6220, 5916, 5625, 5589, 5175&#8243;][\/vc_column][\/vc_row][\/vc_section][vc_section el_class=&#187;dkw-dontprint&#187;][vc_row][vc_column][vc_column_text]<\/p>\n<h2>Passende Talks<\/h2>\n<p>[\/vc_column_text][vc_basic_grid post_type=&#187;ids&#187; element_width=&#187;2&#8243; gap=&#187;10&#8243; item=&#187;517&#8243; grid_id=&#187;vc_gid:1700065753876-4c7b0561-c01f-7&#8243; include=&#187;5606, 2975, 553, 2781, 2978, 4219, 5849, 930, 2967&#8243;][\/vc_column][\/vc_row][\/vc_section]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_section el_class=&#187;dkw-section-lead&#187;][vc_row][vc_column width=&#187;2\/3&#8243; offset=&#187;vc_col-sm-offset-2&#8243;][vc_column_text]Die OpenMV Cam ist wie ein superstarkes Arduino Board mit einer Kamera. Dieses Kameraboard kannst du in Python programmieren. Es vereinfacht [&hellip;]<\/p>\n","protected":false},"author":50,"featured_media":6118,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[15,13],"tags":[],"class_list":["post-6097","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mediadock","category-tools"],"acf":[],"_links":{"self":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts\/6097","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/users\/50"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/comments?post=6097"}],"version-history":[{"count":17,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts\/6097\/revisions"}],"predecessor-version":[{"id":6518,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/posts\/6097\/revisions\/6518"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/media\/6118"}],"wp:attachment":[{"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/media?parent=6097"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/categories?post=6097"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sites.hslu.ch\/werkstatt\/wp-json\/wp\/v2\/tags?post=6097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}