मैं एंड्रॉइड के लिए ओपनसीवी 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);
}
यह आपकी मदद कर सकता है: http://stackoverflow.com/questions/26583649/opencv-c-rectangle-detection-which-has-irregular-side –