public BufferedImage detectAndDisplay(BufferedImage img, CascadeClassifier faceCascade) {
Mat frameGray = new Mat();
BufferedImage imgout = null;
Mat image = ImagePreProcessing.bufferedImageToMat(img);
// -- Detect faces
MatOfRect faces = new MatOfRect();
faceCascade.detectMultiScale(image, faces);
List<Rect> listOfFaces = faces.toList();
for (Rect face : listOfFaces) {
Point center = new Point(face.x + face.width / 2, face.y + face.height / 2);
Imgproc.ellipse(image, center, new Size(face.width / 2, face.height / 2), 0, 0, 360,
new Scalar(255, 0, 255), 3);
Mat faceROI = image.submat(face);
imgout = ImagePreProcessing.Mat2BufferedImage(faceROI);
System.out.println("OpenCV: " +center);
}
return imgout;
}
वह कोड मेरे पास है..लेकिन मुझे नहीं पता कि फसल आउटपुट छवि सेट करने के लिए कोड कहां है। मैं सर्कल टेम्पलेट के साथ मूल संस्करण की तरह तस्वीर रखना चाहता हूं .. फसल नहीं होना मुझे सुझाव दे सकता है, कृपया :)
इनपुट:
आउटपुट:
1
Winda Agusthia Netto
10 नवम्बर 2018, 15:47
1 उत्तर
सबसे बढ़िया उत्तर
अपने कोड में, आपने मूल छवि की एक क्रॉप की गई छवि लौटा दी है, इसलिए यदि आप मूल छवि चाहते हैं, तो वृत्त बनाएं और इसे BufferedImage में बदलें और वापस लौटें।
for (Rect face : listOfFaces) {
Point center = new Point(face.x + face.width / 2, face.y + face.height / 2);
Imgproc.ellipse(image, center, new Size(face.width / 2, face.height / 2), 0, 0, 360,
new Scalar(255, 0, 255), 3);
// dot not crop!!!
/*Mat faceROI = image.submat(face);
imgout = ImagePreProcessing.Mat2BufferedImage(faceROI);*/
System.out.println("OpenCV: " +center);
imgout = ImagePreProcessing.Mat2BufferedImage(image);
}
0
Bahramdun Adil
10 नवम्बर 2018, 14:40
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।