OpenCV错误:在未知函数、文件(Java+;OpenCV 2.4.6)中的断言失败(ptnum>;3)

OpenCV错误:在未知函数、文件(Java+;OpenCV 2.4.6)中的断言失败(ptnum>;3),java,opencv,Java,Opencv,我正在开发eclipse+opencv 2.4.6+JavaAPI 现在我有一个编译错误: OpenCV Error: Assertion failed (ptnum > 3) in unknown function, file ..\..\..\src\opencv\modules\imgproc\src\contours.cpp, line 1969 Exception in thread "main" CvException [org.opencv.core.CvException:

我正在开发eclipse+opencv 2.4.6+JavaAPI

现在我有一个编译错误:

OpenCV Error: Assertion failed (ptnum > 3) in unknown function, file ..\..\..\src\opencv\modules\imgproc\src\contours.cpp, line 1969 Exception in thread "main" CvException [org.opencv.core.CvException: ..\..\..\src\opencv\modules\imgproc\src\contours.cpp:1969: error: (-215) ptnum > 3 ]

at org.opencv.imgproc.Imgproc.convexityDefects_0(Native Method)
at org.opencv.imgproc.Imgproc.convexityDefects(Imgproc.java:3170)
部分代码为:

     List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
     Mat hierarchy = new Mat();
     Imgproc.findContours(imgframe,contours , hierarchy,Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_SIMPLE,new Point(0,0));

                for(int i=0;i<contours.size();i++) {

                Imgproc.drawContours(imgframe, contours,i,new Scalar(255,0,255),2,8,hierarchy,0,new Point());
                MatOfInt hull_=new MatOfInt();

                MatOfInt4 convexityDefects=new MatOfInt4();
                Imgproc.convexHull(contours.get(0), hull_);
                Imgproc.convexityDefects(contours.get(0), hull_, convexityDefects);

                }
List contours=new ArrayList();
Mat层次结构=新Mat();
Imgproc.findContours(imgframe、等高线、层次、Imgproc.RETR_树、Imgproc.CHAIN_近似、简单、新点(0,0));

对于(int i=0;i我认为问题在于凸包中的点数。它应该至少有3个点,使使用
凸包缺陷()
成为可能。可以使用
for
循环中的
if
轻松检查:

if(hull_.rows() >= 3){
    Imgproc.convexityDefects(contours.get(0), hull_, convexityDefects);
}

这只是一个猜测,但我认为问题在于凸包中的点数。它应该至少有3个点数才能使使用
凸包效果成为可能。它应该很容易检查…Mahmm00d哇!解决了,只需检查外壳宽度()>=3!非常感谢!:)很高兴我能提供帮助:)。我想我最好把它作为一个答案(供将来参考)。我发布了一个错误的代码:这是正确的'hull..size().height>=4',我认为
.rows()
就可以了。还有,你确定只有3分就不行吗?我现在不能测试它。