gpt4 book ai didi

java - 整齐地返回轮廓 - OpenCV/Java

转载 作者:行者123 更新时间:2023-12-01 18:35:50 25 4
gpt4 key购买 nike

我将下面的图片作为研究我将使用 findContours() 创建的 future 项目的引用。我几乎在所有事情上都取得了成功,但我遇到了一个问题和另一个问题(这不是问题,但可以改进)。问题在于轮廓的顺序不正确,如图所示,其“H”应首先返回,“i”第二个,“n”第三个,依此类推。他回到我身边,“niodHe”。下面的代码中我缺少什么?或者我应该添加什么来解决这个问题?

enter image description here

      Mat image = Imgcodecs.imread("C:\\Users\\deskadmin\\Desktop\\CONSTRUCAO\\1.png");
Mat original = image.clone();
Mat imageHSV = new Mat(image.size(), CvType.CV_8UC4);
Mat imageBlurr = new Mat(image.size(), CvType.CV_8UC4);
Mat imageA = new Mat(image.size(), CvType.CV_32F);
Imgproc.cvtColor(image, imageHSV, Imgproc.COLOR_BGR2GRAY);
Imgproc.GaussianBlur(imageHSV, imageBlurr, new Size(5,5), 0);
Imgproc.adaptiveThreshold(imageBlurr, imageA, 255,Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY,7, 5);

List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
Imgproc.findContours(imageA, contours, new Mat(), Imgproc.RETR_LIST,Imgproc.CHAIN_APPROX_SIMPLE);
//Collections.sort(contours, Comparator.comparingDouble(Imgproc::contourArea));
for(int i = 0, j = 2; i < (contours.size()-1); i++, j++){
System.out.println("Imgproc.contourArea(contours.get(i)): "+Imgproc.contourArea(contours.get(i)));
//if(Imgproc.contourArea(contours.get(i)) > 50 ){
Rect rect = Imgproc.boundingRect(contours.get(i));
//if(rect.height < 100 & rect.height > 11){
Imgproc.rectangle(image, new Point(rect.x,rect.y), new Point(rect.x+rect.width,rect.y+rect.height),new Scalar(0,0,255));
Mat roi = original.submat(rect);
Imgcodecs.imwrite("C:\\Users\\deskadmin\\Desktop\\CONSTRUCAO\\"+j+".png",roi);
//}else if (rect.height >= 100){
//Mat roi = image.submat(rect);
//Imgcodecs.imwrite("C:\\Users\\deskadmin\\Desktop\\CONSTRUCAO\\marcacao.png",roi);
//}
//}
}

最佳答案

findContours()从下到上从右到左处理图像,如果我没记错的话。

只需在每个轮廓周围创建一个边界框并将它们添加到列表中即可。

稍后,使用它们的 x,y 位置对它们进行排序,您将按照您想要阅读的顺序获得字母。

关于java - 整齐地返回轮廓 - OpenCV/Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60047761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com