![]() |
Erkennen von geometrien in Bild
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen
Ich möchte in einem Bild welches von einer Webcam kommt ein paar einfache geometrien erkennen und nach der erkennung, deren Zentrum als P(x,y) erhalten. Wobei x und y des Pixels in der mitte der geometrie entspricht. Anbei ein beispiel Bild in welchem es eine solche geometrie gibt. Es handelt sich dabei um ein Fiducial auf einer Leiterplatte. Gibt es für solche Anwendungen, fertige Libraries oder ähnliches? Danke schonmal! |
AW: Erkennen von geometrien in Bild
Liste der Anhänge anzeigen (Anzahl: 2)
Habe nun OpenCV gefunden. Ist aber C++
Habe nun kurz ein kleines Consolenprogramm mit OpenCV geschrieben, welches diese Aufgabe erledigt! Anbei die exe im zip. hier der Code:
Code:
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp" #include <iostream> using namespace cv; using namespace std; static void help() { cout << "\nThis program demonstrates circle finding with the Hough transform.\n" "Usage:\n" "./houghcircles <image_name>, Default is pic1.png\n" << endl; } int main(int argc, char** argv) { const char* filename = argc >= 2 ? argv[1] : "board.jpg"; Mat img = imread(filename, 0); if(img.empty()) { help(); cout << "can not open " << filename << endl; return -1; } Mat cimg; medianBlur(img, img, 5); cvtColor(img, cimg, COLOR_GRAY2BGR); vector<Vec3f> circles; HoughCircles(img, circles, CV_HOUGH_GRADIENT, 1, 10, 100, 30, 1, 30 // change the last two parameters // (min_radius & max_radius) to detect larger circles ); char myBuf[10]; for( size_t i = 0; i < circles.size(); i++ ) { Vec3i c = circles[i]; cout << "x:" << Point(c[0],c[1]).x << " y:" << Point(c[0],c[1]).y << " r:" << c[2] << endl; circle( cimg, Point(c[0], c[1]), c[2], Scalar(0,0,255), 1, CV_AA); circle( cimg, Point(c[0], c[1]), 2, Scalar(0,255,0), 1, CV_AA); } imshow("detected circles", cimg); waitKey(); return 0; } |
AW: Erkennen von geometrien in Bild
Zitat:
![]() Prinzipiell lässt sich jede mit Parametern beschreibbare Kurve finden, mit der verallgemeinerten Hough-Transformation kann man auch noch mehr machen. Allerdings benötigt die Hough Transformation eine ganze Menge Rechenleistung. Wenn Du OpenCV verwendest könntest Du auch folgenden Weg gehen ![]() OpenCV Bindings für Delphi findest Du hier ![]() hth Ha-Jö |
AW: Erkennen von geometrien in Bild
Zitat:
Es geht darum etwa zwei bis vier Bilder zu verarbeiten. Bei mir hat das Testprogramm welches oben im Anhang zu finden ist, keine merkliche Systembelastung verursacht. Meine idee ist, aus dem Delphiprogramm das Bild abzuspeichern z.B. als tmp.jpg und danach automatisch die Konsolenapplikation zu starten. Diese gibt dann X und Y Werte des Kreiszentrums aus. Wäre dies ein vernünftiger Weg? Oder verursacht das aufrufen der Konsolenanwenung im Hintergrund massive verzögerung in der Verarbeitung? |
AW: Erkennen von geometrien in Bild
Da gibt es doch DLLs und die kann man von Delphi direkt aufrufen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz