OpenCV:ValueError:零大小数组到减少操作最小值,在裁剪图像时没有标识

时间:2018-03-28 05:36:44

标签: python python-3.x opencv

我有一批需要裁剪的2000张图片。我正在尝试使用opencv。

所有图像格式相同。

示例图片:

enter image description here

我正在裁剪:

enter image description here

它适用于大多数图像,但对于某些图像,它没有。

我一直收到错误:

ValueError: zero-size array to reduction operation minimum which has no identity

这里是link我不断收到上述错误的图片。

这是我的代码。

import numpy as np
import os, shutil
import sys
from collections import defaultdict
from io import StringIO
from matplotlib import pyplot as plt
from PIL import Image
import cv2 as cv
from pprint import pprint
from matplotlib import pyplot as plt

def utilCropImage( img, dictPointValues = None ):

    if dictPointValues != None:
        x = dictPointValues[ 'x' ]
        y = dictPointValues[ 'y' ]
        w = dictPointValues[ 'w' ]
        h = dictPointValues[ 'h' ]

    crop_img = img[y:y+h, x+55:x+w ]
    cv.waitKey(0)

    return crop_img

def cropImage( imageToBeCropped ):

    img = cv.imread( imageToBeCropped )

    if img is None:
        print( "Error reading the image" )
        sys.exit(0)

    gray = cv.cvtColor( img, cv.COLOR_BGR2GRAY )
    __, contours, hierarchy = cv.findContours( gray, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE )

    counter = 0
    for contour in contours:
        counter += 1
        x, y, w, h = cv.boundingRect( contour )
        roi = img[ y: y+h , x: x+w ]

    return ( utilCropImage( img, { 'x': x, 'y': y, 'w': w, 'h': h } ) )



DIR_PATH = 'xxxxxxxxxxxxx/'
OUTPUT_PATH = 'yyyyyy/'

lst = os.listdir(  DIR_PATH )
for i in lst:
    image = DIR_PATH + i
    cv.imwrite( OUTPUT_PATH + i , cropImage( image ))
    cv.waitKey(0)

有人可以指导我,我到底哪里错了。我是opencv的新手。

感谢。

0 个答案:

没有答案