Java Android OpenCV查找轮廓
我需要提取图像的最大轮廓。 这是我目前正在使用的代码。在线收集了一些片段Java Android OpenCV查找轮廓,java,android,opencv,javacv,Java,Android,Opencv,Javacv,我需要提取图像的最大轮廓。 这是我目前正在使用的代码。在线收集了一些片段 List<MatOfPoint> contours = new ArrayList<MatOfPoint>(); Imgproc.findContours(outerBox, contours, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE); double maxArea = -1; int maxAreaIdx = -1; f
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
Imgproc.findContours(outerBox, contours, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE);
double maxArea = -1;
int maxAreaIdx = -1;
for (int idx = 0; idx < contours.size(); idx++) {
Mat contour = contours.get(idx);
double contourarea = Imgproc.contourArea(contour);
if (contourarea > maxArea) {
maxArea = contourarea;
maxAreaIdx = idx;
}
}
错误:
11-18 19:07:49.406: E/cv::error()(3117): OpenCV Error: Unsupported format or combination of formats () in void cvFloodFill(CvArr*, CvPoint, CvScalar, CvScalar, CvScalar, CvConnectedComp*, int, CvArr*), file /home/oleg/sources/opencv/modules/imgproc/src/floodfill.cpp, line 621
所以基本上我的问题是,在找到面积最大的轮廓后,如何“突出”它?我希望其他一切都是黑色的,轮廓是白色的
谢谢 您可以在OpenCV中使用DrawContours函数:
或者可以在C++中使用这个实现(在OpenCV文档中可以找到爪哇中的等价物,只需在谷歌上键入OpenCV+函数名)
@Marek你得到这个的java实现了吗?在颜色斑点检测示例中有java/opencv4android FindOntours示例。
11-18 19:07:49.406: E/cv::error()(3117): OpenCV Error: Unsupported format or combination of formats () in void cvFloodFill(CvArr*, CvPoint, CvScalar, CvScalar, CvScalar, CvConnectedComp*, int, CvArr*), file /home/oleg/sources/opencv/modules/imgproc/src/floodfill.cpp, line 621
Mat src = imread("your image"); int row = src.rows; int col = src.cols;
//Create contour
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
Mat src_copy = src.clone();
findContours( src_copy, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);
// Create Mask
Mat_<uchar> mask(row,col);
for (int j=0; j<row; j++)
for (int i=0; i<col; i++)
{
if ( pointPolygonTest( contours[0], Point2f(i,j),false) =0)
{mask(j,i)=255;}
else
{mask(j,i)=0;}
};
namedWindow("Contour",CV_WINDOW_AUTOSIZE);
imshow("Contour", mask);