2013-04-08 6 views
6

मैं एंड्रॉइड के लिए ओपनसीवी 2.4.3.2 का उपयोग कर एक ऐप लिख रहा हूं।
मेरा ऐप लाइसेंस प्लेट पहचान के बारे में है।
वहाँ यह करने के लिए कुछ तरीके हैं, मैं निम्न करने के लिए चुना है:

1. परिवर्तित एचएसवी रंग स्थान के लिए छवि
2. सीमा छवि लाइसेंस प्लेट एचएसवी के अनुसार (अपने देश में वे पीले कर रहे हैं .. ।)
3. एक गाऊसी धुंधला
4. के साथ छवि चिकनी किनारों का पता लगाने
5. खोजने आकृति
6. निधि houghlines
houglines से 7., घटता है कि आयत
मैं पर अटक कर रहा हूँ से मेल का पता लगाने के 7, मुझे हो से आयताकारों का सफलतापूर्वक पता लगाने का कोई तरीका नहीं मिल रहा है uglines।
एंड्रॉइड ओपनसीवी - हौफलाइन से वक्र का पता लगाएं

मैं जावा में कोड नमूना की बहुत सराहना करता हूं, क्योंकि अधिकांश उदाहरण सी/सी ++ में हैं और इसे परिवर्तित करना इतना सरल नहीं है।

Imgproc.cvtColor(inputFrame, mRGBMat, Imgproc.COLOR_RGBA2BGR); 
// convert HSC color space 
Imgproc.cvtColor(mRGBMat, mHSVMat, Imgproc.COLOR_BGR2HSV); 
// Filter out colors which are out of range (license plate hue ~ 14) 
      Core.inRange(mHSVMat, new Scalar(9, 70, 80, 0), new Scalar(30, 255, 
        255, 0), mGrayMat); 
      // some smoothing of the image 
      for (int i = 0; i < 10; i++) { 
       Imgproc.GaussianBlur(mGrayMat, mGrayMat, new Size(9, 9), 2, 2); 
      } 
Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_DILATE, 
        new Size(3, 3), new Point(1, 1)); 
Imgproc.Canny(mGrayMat, mGrayMat0, 48, 120); 
Imgproc.dilate(mGrayMat0, mGrayMat0, kernel); 
kernel.release(); 
List<MatOfPoint> contours = new Vector<MatOfPoint>(); 
      Imgproc.findContours(mGrayMat0, contours, mHirerchy, 
        Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE); 
      Mat lines = new Mat(); // finds houghlines in the contours 
      Imgproc.HoughLinesP(mGrayMat0, lines, 1, Math.PI/180, 1); 
      for (int x = 0; x < lines.cols(); x++) { 
       double[] vec = lines.get(0, x); 
       double x1 = vec[0], y1 = vec[1], x2 = vec[2], y2 = vec[3]; 
       Point start = new Point(x1, y1); 
       Point end = new Point(x2, y2); 
       Core.line(mRgba, start, end, RECT_COLOR, 1); 

      } 
+0

यह आपकी मदद कर सकता है: http://stackoverflow.com/questions/26583649/opencv-c-rectangle-detection-which-has-irregular-side –

उत्तर

0

मैं पहले इस तरह के एक एल्गोरिथ्म लिखा है:
यहां मेरे कोड (अभी मैं सिर्फ लाइनों ड्राइंग कर रहा हूँ ...) है। आप दो प्रकार में लाइनों को वर्गीकृत: विलोपन

के लिए बाहरी कारकों के 1) ऊर्ध्वाधर 2) क्षैतिज एक्स) तो फिर तुम दो उपप्रकार प्रत्येक में अधिक लाइनों को वर्गीकृत: 1 क) खड़ी, बाईं सीमा 1b) खड़ी, दाएं सीमा 1x) हटाने के लिए आउटलायर 2 ए), 2 बी), 2 एक्स)।

इन ढांचे की औसत ढलानों और अवरोध बिंदु प्राप्त करें और आपके पास "आयताकार" है।

संबंधित मुद्दे