/ / क्या जावासीवी का उपयोग करके मेरी प्लेट नंबरों को काला करने का कोई तरीका है? - जावा, ऑपनेंव, ocr, javacv, अप्रैल

क्या JavaCV का उपयोग करके मेरी प्लेट संख्याओं को काले रंग में पेंट करने का कोई तरीका है? - जावा, ओपनसीवी, ओसीआर, जावैक, एनआरआर

हाय मैंने दो दिन पहले JavaCV का उपयोग करना शुरू कर दिया,

मैं एक बनाने की कोशिश कर रहा हूँ ANPR ओपन सोर्स सिस्टम जावा एसई और मावेन के तहत मेरे गिट रिपॉजिटरी में।

मैंने अपनी प्लेट आयत का पता लगा लिया है और अब मैं ओसीआर रीडिंग के लिए एक अच्छी छवि तैयार करने की कोशिश कर रहा हूं।

मूल छवि:

यहां छवि विवरण दर्ज करें

अभी मैंने यह चित्र प्राप्त किया है:

वर्तमान छवि ,

क्या जावा प्लेट का उपयोग करके मेरी प्लेट संख्याओं को काला करने का कोई तरीका है? मुझे लगता है कि javacv फ़ंक्शंस का उपयोग करने का तरीका थोड़ा सा है।

यहां मैं आपको वे तरीके देता हूं जो इस परिणाम का उत्पादन कर रहे हैं:

पहले मैं इसे एक धब्बा के बाद कहता हूं

public void toB_A_W(JLabel jLabel){
Mat rgbImage = Imgcodecs.imread(original);
Mat destination = new Mat(rgbImage.rows(), rgbImage.cols(), rgbImage.type());
// l objectif et de corriger les erreur de la transformation en noire et blan
int dilation_size = 2;

// la matrice de la dilatation on cherche a dilater en forme de rectange ( Imgproc.MORPH_RECT )
Mat element1 = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(dilation_size + 1, dilation_size + 1));
// on dilate l image
Imgproc.dilate(rgbImage, destination, element1);


Mat labImage = new Mat();
cvtColor(destination, labImage, Imgproc.COLOR_BGR2GRAY);
Imgcodecs.imwrite(ocrReadFrom, labImage);
jLabel.setIcon(new ImageIcon(ocrReadFrom));
JOptionPane.showConfirmDialog(null, "");
}

तब मैं यह कहता हूं:

public void toB_W(JLabel jLabelBlackAndWhiteImage) {
// cella est l image de l ocr
smouthedImage = opencv_imgcodecs.cvLoadImage(ocrReadFrom);
blackAndWhiteImageOCR = opencv_core.IplImage.create(smouthedImage.width(),
smouthedImage.height(), IPL_DEPTH_8U, 1);
// la fonction qui va executé la transformation en noire et blan
System.out.println("0");
//cvAdaptiveThreshold(smouthedImage, smouthedImage, 255, CV_ADAPTIVE_THRESH_GAUSSIAN_C, opencv_imgproc.CV_THRESH_MASK, 15, -2);
opencv_imgproc.cvSmooth(smouthedImage, smouthedImage);
System.out.println("1");
cvCvtColor(smouthedImage, blackAndWhiteImageOCR, CV_BGR2GRAY);
System.out.println("2");
cvAdaptiveThreshold(blackAndWhiteImageOCR, blackAndWhiteImageOCR, 255, CV_ADAPTIVE_THRESH_GAUSSIAN_C, CV_THRESH_BINARY_INV, 17, -4);
System.out.println("3");
opencv_imgproc.cvSmooth(blackAndWhiteImageOCR, blackAndWhiteImageOCR);
// fin de la transformation
cvSaveImage(ocrReadFrom, blackAndWhiteImageOCR);
...}

धन्यवाद

उत्तर:

जवाब के लिए 3 № 1

आप संख्या भरना चाहते हैं, आप प्रदर्शन करने पर विचार कर सकते थे बाइनरी थ्रेसहोल्ड बजाय अनुकूली दहलीज.

मैंने एक सीमा स्तर चुना 40 संख्याओं को विशिष्ट बनाने के लिए।

यहां छवि विवरण दर्ज करें