请帮我,在Java Android Opencv 2.3凸壳Hull
我有一个问题,在凸面赫尔在Android上。我使用Java和OpenCV 2.3。
之前我做了Java的,我与Visual Studio 2008
该代码可工作于C运行成功++使它在C++。
现在,我想在Android上将它从C++转换为Java。当我在SDK Android模拟器上运行它时发现错误,如“强制关闭”。
这是我的C++代码:
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours(canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
drawing = Mat::zeros(canny_output.size(), CV_64F);
/// Find the convex hull object for each contour
vector<vector<Point> > hull (contours.size());
for(int i = 0; i < contours.size(); i++)
{ convexHull(Mat(contours[i]), hull[i], false);
}
for(size_t i = 0; i < contours.size(); i++){
drawContours(drawing, hull, i, Scalar(255, 255, 255), CV_FILLED); // FILL WHITE COLOR
}
而且这是在Android上我的代码:
Mat hierarchy = new Mat(img_canny.rows(),img_canny.cols(),CvType.CV_8UC1,new Scalar(0));
List<Mat> contours =new ArrayList<Mat>();
List<Mat> hull = new ArrayList<Mat>(contours.size());
drawing = Mat.zeros(img_canny.size(), im_gray);
Imgproc.findContours(img_dilasi, contours, hierarchy,Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_SIMPLE, new Point(0, 0));
for(int i=0; i<contours.size(); i++){
Imgproc.convexHull(contours.get(i), hull.get(i), false);
}
for(int i=0; i<contours.size(); i++){
Imgproc.drawContours(drawing, hull, i, new Scalar(255.0, 255.0, 255.0), 5);
}
您的信息,我做了凸包稍加修改我的代码。 我在轮廓内填充颜色。
任何人都可以帮我解决我的问题吗?
我非常感谢您的帮助。
很难说出是什么原因导致您的问题。你得到的具体错误是什么?是否有与之相关的日志输出? – Aurelius
当我在SDK Android模拟器上运行它时,窗口出现错误,“应用程序意外停止”,并被告知通过单击“强制关闭”来停止。当我检查日志猫错误的Eclipse,我发现该进程停止在这一行“Imgproc.convexHull(contours.get(i),hull.get(i),false);” 我不知道为什么这个过程停在那条线上。 你不能帮我解释一下吗? – Jenang
我想我在声明“hull”变量时犯了一个错误。 但是,我不知道如何解决这个问题。我想我已经按照适用的规定宣布了这个变量。 您的意见如何? 您是否认为我的代码中的变量“hull”声明不正确? – Jenang