मैं इस काले बहुभुज के चारों ओर कंटूर की पहचान करने की कोशिश करता हूं और मुझे उन बिंदुओं तक पहुंचने की आवश्यकता है लेकिन यह मेरे लिए काम नहीं करता है। यह इनपुट छवि javacv/opencv का उपयोग कर काले बहुभुज पर बिंदुओं की पहचान कैसे करें?
लेकिन जब मैं निम्नलिखित कोड करने का प्रयास करता हूं तो उसने अपेक्षित परिणाम नहीं दिया जिसका अर्थ यह होना चाहिए।
CanvasFrame cnvs=new CanvasFrame("Polygon");
cnvs.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
CvMemStorage storage=CvMemStorage.create();
CvSeq squares = new CvContour();
squares = cvCreateSeq(0, sizeof(CvContour.class), sizeof(CvSeq.class), storage);
String path="project/Test/img/black.png";
IplImage src = cvLoadImage(path);
IplImage gry=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);
cvCvtColor(src, gry, CV_BGR2GRAY);
cvThreshold(gry, gry, 230, 255, CV_THRESH_BINARY_INV);
cnvs.showImage(gry);
cvFindContours(gry, storage, squares, Loader.sizeof(CvContour.class), CV_RETR_LIST, CV_CHAIN_APPROX_NONE);
CvSeq ss=null;
CvSeq tmp=null;
int ii=0;
for (ss=squares; ss!=null; ss=ss.h_next()) {
tmp=cvApproxPoly(ss, sizeof(CvContour.class), storage, CV_POLY_APPROX_DP, 8, 0);
System.out.println("index "+ii+" points "+tmp.total()+" area "+cvContourArea(ss, CV_WHOLE_SEQ, 0));
cvDrawContours(src, ss, CvScalar.RED, CV_RGB(248, 18, 18), 1, -1, 8);
//drawPoly(src, tmp);
}
IplConvKernel mat=cvCreateStructuringElementEx(7, 7, 3, 3, CV_SHAPE_RECT, null);
cvDilate(src, src, mat, CV_C);
cvErode(src, src, mat, CV_C);
cnvs.showImage(src);
saveImage("nw.png", src);
लेकिन जब मैं जाँच बाहर यह केवल
सूचकांक 0 अंक 8 क्षेत्र 20179,0
इसका मतलब है कि यह केवल बहुभुज के 8 अंक की पहचान लेकिन यह 12 अंक होना चाहिए देता है डाल दिया। कृपया कोई इस कोड की समस्या को समझा सकता है।
इस शो से बाहर छवि