Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检测并删除角色周围的矩形_Python_Opencv_Computer Vision_Ocr_Tesseract - Fatal编程技术网

Python 检测并删除角色周围的矩形

Python 检测并删除角色周围的矩形,python,opencv,computer-vision,ocr,tesseract,Python,Opencv,Computer Vision,Ocr,Tesseract,如何删除字符和数字周围的矩形,以便在之后执行OCR?以下是一个例子: 我假设这些线是连续的。我试着用OpenCV轮廓来做,但到目前为止,它似乎是一个非常不可靠的算法,严重依赖于图像的噪声、线条的宽度等 我对最通用、最健壮的算法感兴趣。我也可以考虑神经解决方案,但到目前为止,我只发现了一种方法来检测和提取字符,当字符在方块/矩形中被字符/数字分割时,也经常失败。 < P>我们可以使用FieldTrimes删除它们来获得框。 我们需要先对图像做一个遮罩。我使用[200255]范围来获得白色背景。然

如何删除字符和数字周围的矩形,以便在之后执行OCR?以下是一个例子:

我假设这些线是连续的。我试着用OpenCV轮廓来做,但到目前为止,它似乎是一个非常不可靠的算法,严重依赖于图像的噪声、线条的宽度等


我对最通用、最健壮的算法感兴趣。我也可以考虑神经解决方案,但到目前为止,我只发现了一种方法来检测和提取字符,当字符在方块/矩形中被字符/数字分割时,也经常失败。

< P>我们可以使用FieldTrimes删除它们来获得框。

我们需要先对图像做一个遮罩。我使用[200255]范围来获得白色背景。然后我腐蚀了面具,以确保盒子之间有足够的间隔

然后我用找到的玩具来拿箱子。我去掉了小轮廓,过滤掉盒子里的数字。我重新画了盒子,里面没有数字

然后,我回到原来的图像上,把蒙着的部分涂成白色

导入cv2
将numpy作为np导入
#加载图像
img=cv2.imread(“numbers.png”);
灰色=cv2.CVT颜色(img,cv2.COLOR_BGR2GRAY);
掩模=cv2.inRange(灰色,200255);
#腐蚀以增强箱体分离
核=np.ones((3,3),np.uint8);
mask=cv2.腐蚀(mask,kernel,迭代次数=1);
#轮廓OpenCV3.4,如果您使用的是OpenCV 2或OpenCV 4,它将返回(轮廓,41;
_,等高线,u=cv2.找到的轮廓(遮罩,cv2.RETR_树,cv2.CHAIN_近似简单);
#只带大箱子
截止值=250;
大公司=[];
对于轮廓中的con:
面积=cv2。轮廓面积(con)
如果面积>截止值:
大的cons.append(con);
印刷品(面积);
#做个面具
重绘=np.类零(掩码);
cv2.绘制等高线(重画,大图标,-1,(255),-1);
重绘=cv2。按位_非(重绘);
img[redraw==255]=(255255);#替换为您想要的任何颜色作为背景
#展示
cv2.imshow(“图像”,img);
cv2.imshow(“面具”,面具);
cv2.imshow(“重画”,重画);
cv2.waitKey(0);