Finde ich wirklich schön, dass da noch Leute mitlesen! 
Zwischenstand heute:
OpenCV läuft nun mit dem VisualStudio und ich konnte ein paar Tests machen. als Ausgangsbild habe ich die vorhandenen Bilder genutzt. Das Farbbild wird in ein Graustufenbild gewandelt welches dann auf zwei Farben umgesetzt wird. Dazu nutze ich momentan einen festgelegten Threshold der dann im fertigen Programm irgendwann in der Kalibrierung automatisch ermittelt werden soll. auf das Bild wende ich dann die Kantendetektion an, die mir über die Matrix eine halbwegs gerade Linie zieht. Resultat:
Graustufen: http://placerbot.org/OpenCV_test/L64...front_grey.jpg
Graustufen mit Sobelfilter (Nicht verwendet, nur zur Anschauung): http://placerbot.org/OpenCV_test/L64...grey_sobel.jpg
Schwarzweiß mit Threshold 120/255 : http://placerbot.org/OpenCV_test/L64...blackWhite.jpg
Sobel über SW Bild: http://placerbot.org/OpenCV_test/L64...hite_sobel.jpg
Wenn man den Chip richtig beleuchtet und das Lineal wegnimmt (ohne das stand der Chip leider nicht - die Nozzle wird schon alleine aufgrund der Schärfentiefe nicht mehr zu sehen sein) dann lässt sich da einiges machen. Ich muss sagen dass ich sehr zufrieden mit dem Ergebnis der Spielerei bin. Hätte mit diesem schlechten Ausgangsbild nicht annähernd so gute Ergebnisse erwartet.
Für die Erkennung muss man sich dann noch die Region of Interest (ROI) heraussuchen und eine Beschreibungsdatei plus zugehöriger Datenstruktur ausdenken. Dann kann es an die Centroid Detection und den Algorithmus zur Kantendetektion gehen. Vielleicht hat OpenCV da auch etwas in Petto das ganz gut funktioniert. Das würde es um einiges einfacher machen! Später ist erstmal der Blitz dran 
Code (Schlimm, ich weiß - War aber sehr auf Ergebnisse erpicht!):
Code:
// Matrices to store the image file
Mat original, greyScale, blackWhite, sobelImg, blackWhiteSobel;
// Params to save the images as jpeg
vector<int> jpegParams;
jpegParams.push_back(IMWRITE_JPEG_QUALITY);
jpegParams.push_back(100);
string fileName = "examples/L6470_light_front.jpg";
// Read the input file
original = imread(fileName);
cvtColor(original, greyScale, COLOR_RGB2GRAY);
//Save greyScale image
imwrite("output_grey.jpg",greyScale,jpegParams);
blackWhite = greyScale > THRESHOLD;
namedWindow("Converted to BW image", WINDOW_AUTOSIZE);
imshow("Converted to BW image", blackWhite);
imwrite("output_blackWhite.jpg", blackWhite, jpegParams);
Sobel(blackWhite, blackWhiteSobel, blackWhite.depth(), DERIVATIVE, DERIVATIVE, SOBELSIZE, 1, 0);
namedWindow("Sobel applied to BW image", WINDOW_AUTOSIZE);
imshow("Sobel applied to BW image", blackWhiteSobel);
imwrite("output_blackWhite_sobel.jpg", blackWhiteSobel, jpegParams);
Sobel(greyScale, sobelImg, greyScale.depth(), DERIVATIVE, DERIVATIVE, SOBELSIZE, 1, 0);
imwrite("output_grey_sobel.jpg", sobelImg,jpegParams);
waitKey(0);
return 0;
Lesezeichen