java项目类上有黑色的点_图像处理 – 如何使用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個點.
請一些人解釋這段代碼的問題.
這顯示了輸出圖像
總結
以上是生活随笔為你收集整理的java项目类上有黑色的点_图像处理 – 如何使用javacv / opencv识别黑色多边形上的点?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python程序设计的基本步骤_Pyth
- 下一篇: object转float_人工智能-Ob