フレームに凸状の欠陥を置くことに問題があります。それらを計算するために、c++ ソースを変更しました。これがアーカイブしたものです。
mConvexityDefectsMatOfInt4 = new MatOfInt4();
if(contours.size() > 0 && convexHullMatOfInt.rows() > 0)
Imgproc.convexityDefects(contours.get(0), convexHullMatOfInt, mConvexityDefectsMatOfInt4);
ただし、Imgproc.drawContours(...) メソッドには、パラメータとして渡される凸性欠陥が ArrayList である必要があります。どうすれば変換できるのかわかりません。凸包でも同様の問題がありましたが、回避策を見つけました:
convexHullMatOfInt = new MatOfInt();
convexHullPointArrayList = new ArrayList<Point>();
convexHullMatOfPoint = new MatOfPoint();
convexHullMatOfPointArrayList = new ArrayList<MatOfPoint>();
//Calculate convex hulls
if(contours.size() > 0)
{
Imgproc.convexHull( contours.get(0), convexHullMatOfInt, false );
for(int j=0; j < convexHullMatOfInt.toList().size(); j++)
convexHullPointArrayList.add(contours.get(0).toList().get(convexHullMatOfInt.toList().get(j)));
convexHullMatOfPoint.fromList(convexHullPointArrayList);
convexHullMatOfPointArrayList.add(convexHullMatOfPoint);
}
凸性欠陥に対する同様の解決策は機能していません。どうすれば問題を解決できるか考えている人はいますか?
MatOfInt4() から ArrayList() に変換して、凸性の欠陥を描画できるようにする方法は?