मुझे किसी छवि का सबसे बड़ा समोच्च निकालने की आवश्यकता है। यह वह कोड है जिसका मैं वर्तमान में उपयोग कर रहा हूं। कुछ स्निपेट्स ऑनलाइन एकत्र हुएएंड्रॉइड ओपनसीवी समोच्च खोजें
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
Imgproc.findContours(outerBox, contours, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE);
double maxArea = -1;
int maxAreaIdx = -1;
for (int idx = 0; idx < contours.size(); idx++) {
Mat contour = contours.get(idx);
double contourarea = Imgproc.contourArea(contour);
if (contourarea > maxArea) {
maxArea = contourarea;
maxAreaIdx = idx;
}
}
और ऐसा लगता है। हालांकि, मुझे पूरा यकीन नहीं है कि यहां से कैसे जाना है। मैंने Imgproc.floodFill
का उपयोग करने का प्रयास किया, लेकिन मुझे पूरा यकीन नहीं है कि कैसे। इस फ़ंक्शन को मूल Mat
मूल आकार Mat
+2 क्षैतिज और +2 लंबवत के समान मास्ट Mat
की आवश्यकता है। जब मैंने इसे contours.get(maxAreaIdx)
समोच्च पर चलाया, तो मुझे एक त्रुटि मिली। कोड:
Mat mask = Mat.zeros(contour.rows() + 2, contour.cols() + 2, CvType.CV_8UC1);
int area = Imgproc.floodFill(contour, mask, new Point(0,0), new Scalar(255, 255, 255));
त्रुटि:
11-18 19:07:49.406: E/cv::error()(3117): OpenCV Error: Unsupported format or combination of formats() in void cvFloodFill(CvArr*, CvPoint, CvScalar, CvScalar, CvScalar, CvConnectedComp*, int, CvArr*), file /home/oleg/sources/opencv/modules/imgproc/src/floodfill.cpp, line 621
तो मूल रूप से मेरे सवाल है, कैसे कर सकते हैं मैं,, सबसे बड़ा क्षेत्र के साथ समोच्च पाने के लिए "आकर्षण" इसके बाद? मैं सबकुछ काला होना चाहता हूं, और समोच्च सफेद होना
धन्यवाद!
क्या आप जावा में कार्यान्वयन प्रदान कर सकते हैं? मुझे यह नहीं मिल रहा है ... – Marek
@Marek क्या आपको इसका जावा कार्यान्वयन मिला ?? –
जावा/ओपनसीवी 4 एंड्रॉइड खोज रंग-ब्लॉब-डिटेक्शन नमूना में कॉन्टूर उदाहरण है। – Mytheral