Ich entwickle Projekt mit Java, um Komponenten mit opencv-Paket zu identifizieren, aber ich bin neu bei Javacv und ich möchte nur wissen, wie Sie Rechtecke in einem bestimmten Quellbild identifizieren können bitte einige Erfahrung Person geben einige grundlegende Richtlinie, um dies zu archivieren Aufgabe. Ich versuche hier den Template-Abgleich zu verwenden, aber es kann nur ein Rechteck mit exakter Größe identifizieren. Aber in meinem Fall muss ich Rechteck mit variabler Länge identifizieren?Wie kann man mit javacv ein Quadrat oder ein Rechteck mit variabler Länge und Breite identifizieren?
import java.util.Arrays;
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
public class TestingTemplate {
public static void main(String[] args) {
//Original Image
IplImage src = cvLoadImage("src\\lena.jpg",0);
//Template Image
IplImage tmp = cvLoadImage("src\\those_eyes.jpg",0);
//The Correlation Image Result
IplImage result = cvCreateImage(cvSize(src.width()-tmp.width()+1, src.height()-tmp.height()+1), IPL_DEPTH_32F, 1);
//Init our new Image
cvZero(result);
cvMatchTemplate(src, tmp, result, CV_TM_CCORR_NORMED);
double[] min_val = new double[2];
double[] max_val = new double[2];
//Where are located our max and min correlation points
CvPoint minLoc = new CvPoint();
CvPoint maxLoc = new CvPoint();
cvMinMaxLoc(result, min_val, max_val, minLoc, maxLoc, null); //the las null it's for
optional mask mat()
System.out.println(Arrays.toString(min_val)); //Min Score
System.out.println(Arrays.toString(max_val)); //Max Score
CvPoint point = new CvPoint();
point.x(maxLoc.x()+tmp.width());
point.y(maxLoc.y()+tmp.height());
cvRectangle(src, maxLoc, point, CvScalar.WHITE, 2, 8, 0); //Draw the rectangule result in original img.
cvShowImage("Lena Image", src);
cvWaitKey(0);
//Release
cvReleaseImage(src);
cvReleaseImage(tmp);
cvReleaseImage(result);
}
}
kann Bitte jemand helfen diese
Quadrate? Squires sind härter. –
Dave: Bitte kannst du eine Gildenlinie zur Verfügung stellen, um diese zu archivieren> –
Ist es Squire oder SQUARE? wenn nicht, was ist Squire? Google sagt, es ist eine Rüstung von Soldaten. Ist es das was du willst? Fügen Sie besser ein Bild hinzu. –