Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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_Python 3.x_Image Processing_Python Imaging Library_Crop - Fatal编程技术网

检测图像中的文本位置并在Python中裁剪它

检测图像中的文本位置并在Python中裁剪它,python,python-3.x,image-processing,python-imaging-library,crop,Python,Python 3.x,Image Processing,Python Imaging Library,Crop,我有这张照片 我想检测文本的位置,并裁剪仅聚焦于该文本的图像 这是我的代码: 从PIL导入图像 #以RGB模式打开图像 im=Image.open(r“Image.jpg”) #图像的大小(以像素为单位)(原始图像的大小) #(这不是强制性的) 宽度、高度=im尺寸 打印(im.尺寸) #设置裁剪图像的点 左=5 顶部=高度/4 右=164 底部=3*高度/4 #上述尺寸的裁剪图像 #(它不会更改原始图像) im1=im.裁剪((左、上、右、下)) #在图像查看器中显示图像 im1.save(

我有这张照片

我想检测文本的位置,并裁剪仅聚焦于该文本的图像

这是我的代码:

从PIL导入图像
#以RGB模式打开图像
im=Image.open(r“Image.jpg”)
#图像的大小(以像素为单位)(原始图像的大小)
#(这不是强制性的)
宽度、高度=im尺寸
打印(im.尺寸)
#设置裁剪图像的点
左=5
顶部=高度/4
右=164
底部=3*高度/4
#上述尺寸的裁剪图像
#(它不会更改原始图像)
im1=im.裁剪((左、上、右、下))
#在图像查看器中显示图像
im1.save(“new.jpg”)
此代码工作正常,但文本在图像中的位置不是静态的。
我希望代码自动检测文本的位置,然后进行裁剪。

您可以使用基于深度学习的模型“EAST”来检测图像上的文本。OpenCV的EAST文本检测器基于一种新颖的体系结构和训练模式。它能够

(1) 以每秒13帧的速度在720p图像和

(2) 获取最先进的文本检测精度。请参阅此链接以获取参考:。

您可以使用
getbbox()
获取边界框:

image=Image.open('text.jpg') 
x1,y1,x2,y2=image.getbbox() 
print(x1,y1,x2,y2)   
输出

16 192 208 216

到目前为止,您试图解决什么实际问题?我尝试将图像分割为(高度/30)部分(注意:30表示可以读取图像中数字的框的高度),然后进入“for”循环并全部读取,如果脚本找到数字,则断开循环。但是Mark Setchell,给了我有史以来最好的解决方案,请阅读下面的正确答案。虽然这个链接可以回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-这是有史以来最好的解决方案,非常感谢。