如何在python中裁剪图像的底部(带字幕的部分)

时间:2017-10-21 17:38:04

标签: python image opencv ocr

我正在用python中的视频进行字幕提取。我在python中使用了opencv来做这个。我把它分成了帧,每帧都作为图像存储在我的磁盘中,我正在做ocr。但我不想在整个图像上执行ocr。我只想要字幕部分。我用这些值手动裁剪图像278:360,因为我的图像尺寸是360:640。但是不同视频文件的图像大小不同。现在我的问题是如何以编程方式单独裁剪字幕部分。请回答。谢谢提前

    textImage = image[278:360,:]

2 个答案:

答案 0 :(得分:2)

如果你确定字幕会在那里,你可以拍摄图像高度的最后三分之一。

例如,对于以下图像:

enter image description here

请按以下步骤操作:

  1. 将图像读入numpy数组:
  2. 在我的示例中,我使用imread中的skimage.io,但您可以使用opencv

    from skimage.io import imread 
    img = imread('http://cdn.wccftech.com/wp-content/uploads/2017/05/subtitle-of-a-blu-ray-movie.jpg')
    img.shape #   >>> (383, 703, 3) 
    
    1. 获取图片的底部三分之一(包含副标题):
    2. 我们的想法是将图像的高度除以3并取下图像的底部三分之一:

      crop_position = int(img.shape[0]/3)
      subtitle_img = img[img.[0] - crop_position:,:,:]
      

      结果subtitle_img如下所示:

      enter image description here

答案 1 :(得分:0)

就我而言,我只使用一个库和对数组的常规操作:

import matplotlib.image as mpimg
image= mpimg.imread('someImage.jpg')

#Example for bottom half of an image, but you can replace this with your parameter
crop_position = image.shape[0] // 2

half_imagage = image[image.shape[0] - crop_position:,:]

它返回一个漂亮的图像: enter image description here