Codeblocks und opencv in c++

  • Guten Morgen zusammen,

    ich versuche mich mal wieder in Spielereien mit c++.

    Nach zig versuchen Opencv auf meiner Raspi 4b/8Gb zu installieren scheint es so zu sein das die Version 4.5.0 installiert ist.

    Als IDE versuche ich mich in Code::Blocks.


    Aber selbst einfache Programme bekomme ich nicht zum laufen.


    Kann mir jemand sagen wie ich unter Project/Build options.... die Linker settings und die Compiler settings einstellen muss?

    Woher weiß ich eigentlich wann ich welche libraries brauche? Und wo liegen die/ wo sollen die liegen? Durch meine Mehrfachinstallation hab ich da mehrere verschiedene zur Auswahl.

    Mit den includes hab ich das gleiche Problem. Mit ganz viel Suchen im Internet finde ich dann das passende include zu meinem Befehl. Dann muss ich meine Festplatte nach dem passenden include durchsuchen um den passenden Pfad zu finden.


    Danke für Eure Hilfe,


    Achim

  • Includes werden nicht als volle Pfade angegeben. Sondern relativ zu einem mit -I an den Compiler übergebenen Pfad. Wobei eine ganze Reihe von Pfaden des systems schon vordefiniert sind.


    Ich würde dir für den Anfang raten, nur das per Paketverwaltung verfügbare OpenCV zu benutzen. Und dann mit einem CMake File zu beginnen, welches dir die ganzen includes und linker instructions abnimmt: https://docs.opencv.org/master…rial_linux_gcc_cmake.html


    Und du hast hast mindestens einen Fehler: fehlende Anführungszeichen um dein Video Argument.


    Falls C++ nicht zwingend ist: OpenCV ist sehr gut mit Python nutzbar. Und das kommt ohne die vielen Probleme eines Build-Systems und anderen Eigenheiten von C++.

  • c++ sollte es schon sein. Zum einen beruhen die Roboterprogramme meines Arbeitgebers auf c++. Außerdem kenne ich das vom Arduino. Des Weiteren ist mein "Traum"-Projekt ziemlich zeitkritisch.

    Allerdings hab ich mit linken, compilieren, debuggen und was es da alles gibt noch nie was zu tun gehabt.

  • Deine Entscheidung. Ich halte die fuer fragwuerdig, und das aus der Erfahrung diverser OpenCV-Projekte im Feld, und meinen Kenntnissen der Sprachen Python und C++ aus privater wie beruflicher Perspektive. Auch wenn Python als Sprache langsam ist, das verstoepseln von Algorithmen der OpenCV genauso wie zB auch im Bereich maschine-learning, wo es die mit Abstand dominierende Sprache ist, belegen, dass zeitkritisch & Python sich nicht ausschliessen. Man sollte natuerlich nicht von Hand Millionen von Pixeln anfassen.


    Aber wenn du auf C++ bestehst - compilieren, linken, debuggen ist da eben notwendig. Uebrigens auch auf dem Arduino, die haben das nur nett verpackt (was die eigentliche Leistung des Projektes darstellt. Nicht die Hardware). Und den Anfang habe ich dir ja genannt. Man muss sich bei C++ mit dem build-system auseinandersetzen. CMake ist ganz ok, der Einaeugige unter den Blinden. Und hat auch Code-Blocks Unterstuetzung: https://cmake.org/cmake/help/l…generator/CodeBlocks.html

  • Mein erstes HelloWorld-Prog hab ich mit cmake fertig bekommen.

    Mein zweites Prog läuft leider nicht....

    video.mp4 befindet sich im gleichen Ordner "..../laser1".


    Die CMakeLists.txt sieht folgender maßen aus:

    Code
    cmake_minimum_required(VERSION 2.8)
    project( laser1 )
    find_package( OpenCV REQUIRED )
    include_directories( ${OpenCV_INCLUDE_DIRS} )
    add_executable( laser1 laser1.cpp )
    target_link_libraries( laser1 ${OpenCV_LIBS} )

    Dieses "neue" Programm hat #include<iostream> im Header.

    Muss ich das bei CMakeLists.txt berücksichtigen?

  • Also ich komme immer weiter mit meinem Programm...


    Aber jetzt möchte ich den roten Farbkanal aus einem Video herausfiltern.


    Hat jemand eine Idee wie ich grün und blau aus einem Video auf null setze?