Image processing 检测图像中的一张纸,如cam扫描仪应用程序
从图像中,我需要提取一张纸,就像camscanner应用程序一样 我知道我可以通过检测我想要检测的纸张的边缘来做到这一点。然后执行透视变换。我在python中使用openCV库。 这是我试图在其中查找纸张的图像: () 以下是我已经尝试过的: 方法1: (使用阈值)Image processing 检测图像中的一张纸,如cam扫描仪应用程序,image-processing,hough-transform,canny-operator,image-thresholding,adaptive-threshold,Image Processing,Hough Transform,Canny Operator,Image Thresholding,Adaptive Threshold,从图像中,我需要提取一张纸,就像camscanner应用程序一样 我知道我可以通过检测我想要检测的纸张的边缘来做到这一点。然后执行透视变换。我在python中使用openCV库。 这是我试图在其中查找纸张的图像: () 以下是我已经尝试过的: 方法1: (使用阈值) 使用图像平滑(guassian)对图像进行预处理 模糊/双边模糊) 将图像分割为h、s、v通道 饱和信道上的自适应阈值 一些形态学操作,如膨胀和侵蚀 查找等高线,确定最大等高线并查找 角点 我根据stackoverflow答案实现了
#将图像读入BGR空间
image=cv2.imread(“./images/sheet3.png”)
#双边滤波以平滑图像,但不平滑边缘
img=cv2.双边过滤器(图,20,75,75)
#将BGR转换为HSV
hsv=cv2.CVT颜色(img,cv2.COLOR\U BGR2HSV)
#分割HSV频道
h、 s,v=cv2.分流(hsv)
#双倍饱和通道
灰色=cv2.addWeighted(cv2.CVT颜色(img,cv2.COLOR\u BGR2GRAY),0.0,s,2.0,0)
#自适应阈值分割
阈值=cv2。自适应阈值(灰色,255,cv2。自适应阈值平均值,cv2。阈值二进制值,109,10)
#应用膨胀和侵蚀的形态学运算
kernel=cv2.getStructuringElement(cv2.morp_RECT,(2,2))
morph=cv2.morphologyEx(脱粒,cv2.morph_开放,内核)
#寻找所有的轮廓
cnts=cv2.findContours(变形、cv2.RETR\u列表、cv2.CHAIN\u近似简单)[-2]
canvas=img.copy()
#对轮廓进行排序并获取最大轮廓
cnts=已排序(cnts,键=cv2.轮廓面积)
碳纳米管=碳纳米管[-1]
#求轮廓的周长
弧长=cv2.弧长(cnt,真)
#通过近似多边形DP查找轮廓的端点
近似值=cv2.近似聚合度(cnt,0.02*arclen,真值)
cv2.绘制轮廓图(画布,[cnt],-1,(255,0,0),1,cv2.线条图AA)
cv2.绘制轮廓(画布,[近似值],-1,(0,0,255),1,cv2.线条_AA)
cv2.imwrite(“detected.png”,canvas)
我对图像处理和openCV有点陌生。
请分享一些关于如何更进一步,更准确地获得结果的见解。TIA。对于此类问题,边缘检测通常表现不佳。喜欢区域检测,如方法1(可能具有自适应阈值,并尽可能利用颜色)。对于像这样的情况,放弃这个想法,任何东西都不会可靠地工作。@YvesDaoust我的想法是一样的,正如你在我上面提到的代码中所看到的,我使用了自适应阈值,因为每个像素的阈值都会改变,上述方法也不会产生准确的结果,例如,这幅图像:,这是阈值图像:不要期待奇迹,但使用更大的过滤器(不要满足于一次尝试)。还可以查看其他分段方法。请搜索现有的问题和答案。我感觉像是一天两次检测到一张纸被带到这里。@Pigger我所写的所有上述代码都来自以前的答案,尽管正如我所提到的,这些答案对某些图像不适用,例如:I.imgur.com/e6tVjaR.png。我只是要求做一些额外的处理。对于此类问题,莎草检测通常表现不佳。喜欢区域检测,如方法1(可能具有自适应阈值,并尽可能利用颜色)。对于像这样的情况,放弃这个想法,任何东西都不会可靠地工作。@YvesDaoust我的想法是一样的,正如你在我上面提到的代码中所看到的,我使用了自适应阈值,因为每个像素的阈值都会改变,上述方法也不会产生准确的结果,例如,这幅图像:,这是阈值图像:不要期待奇迹,但使用更大的过滤器(不要满足于一次尝试)。还可以查看其他分段方法。请搜索现有的问题和答案。我感觉像是一天两次检测到一张纸被带到这里。@Pigger我所写的所有上述代码都来自以前的答案,尽管正如我所提到的,这些答案对某些图像不适用,例如:I.imgur.com/e6tVjaR.png。我只是要求做一些额外的处理。谢谢