Android 图像处理:在打开的书中找到突出的页面并进行透视变换
我必须让这张图片中有一页书名为“第三单元:积极学习的秘密”的书成为图片中唯一的一页 为此,我需要删除另一个页面的一部分,这也是在图像中 我需要编写一个通用代码,可以为许多类似的图像这样做 我尝试使用Canny边缘检测,但它无法检测到我想要的页面 如果有人能帮助指导我,我可以用什么来实现这一点,我将不胜感激 提前谢谢 [编辑] 这基本上就是我使用Canny边缘检测器所做的Android 图像处理:在打开的书中找到突出的页面并进行透视变换,android,image,opencv,image-processing,edge-detection,Android,Image,Opencv,Image Processing,Edge Detection,我必须让这张图片中有一页书名为“第三单元:积极学习的秘密”的书成为图片中唯一的一页 为此,我需要删除另一个页面的一部分,这也是在图像中 我需要编写一个通用代码,可以为许多类似的图像这样做 我尝试使用Canny边缘检测,但它无法检测到我想要的页面 如果有人能帮助指导我,我可以用什么来实现这一点,我将不胜感激 提前谢谢 [编辑] 这基本上就是我使用Canny边缘检测器所做的 Imgproc.Canny(gray,canny,0,50); Imgproc.findCon
Imgproc.Canny(gray,canny,0,50);
Imgproc.findContours(canny, contours, hierarchy,
Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE);
for(int i=0;i<contours.size();i++){
double temp=Imgproc.contourArea(contours.get(i));
if(temp>100){
if(temp>largestArea){
largestArea=temp;
largestAreaIndex=i;
}
}
}
m2f=new MatOfPoint2f(contours.get(largestAreaIndex).toArray());
arc=Imgproc.arcLength(m2f,true);
Imgproc.approxPolyDP(m2f,approx,0.02*arc,true);
if(approx.toList().size()==4){
Imgproc.drawContours(img,contours,largestAreaIndex,new Scalar(255,255,255));
}
Imgproc.Canny(灰色,Canny,0,50);
Imgproc.findContours(坎尼、轮廓、层次、,
Imgproc.RETR\u列表、Imgproc.CHAIN\u近似值\u简单值);
对于(int i=0;i100){
如果(温度>大面积){
大面积=温度;
大妊娠指数=i;
}
}
}
m2f=新的MatOfPoint2f(courts.get(largestreaIndex.toArray());
弧=Imgproc.弧长(m2f,真);
Imgproc.近似聚合度(m2f,约0.02弧,真);
如果(大约toList().size()==4){
img绘制等高线(img,等高线,大面积指数,新标量(255255));
}
将图像切成垂直条带。在每个条带中,消除顶部和底部的黑色区域。然后估计条带或类似活动指示器中的灰度值方差(或梯度模量方差)。这将显示空条,这应该足以大致检测到正确的页面
关于透视变换的提示:使用高结构元素执行侵蚀,以便来自连续行的字符合并。这将创建强边,为您提供垂直方向
也许你应该从基本知识开始?你的问题也太宽泛了。“我试过使用Canny”也没有表现出你方太多的努力。嘿@Pieget请检查我的编辑。谢谢请阅读