OpenCV (3.4.2): ошибка: (-215: утверждение не удалось) с методом сопоставления шаблонов

Я использую нормализацию в качестве метода предварительной обработки с сопоставлением шаблонов. Однако я столкнулся с ошибкой при запуске кода

Ошибка: ошибка: OpenCV (3.4.2) /opt/concourse/worker/volumes/live/9523d527-1b9e-48e0-7ed0-a36adde286f0/volume/opencv-suite_1535558719691/work/modules/imgproc/ src/templmatch.cpp:1102: ошибка: (-215: Ошибка утверждения) (глубина == 0 || глубина == 5) && type == _templ.type() && _img.dims() ‹= 2 в функции ' matchTemplate'

Это мой метод предварительной обработки:

def Image_Preprocessing (image):
    Gray_image = cv2.cvtColor(image , cv2.COLOR_BGR2GRAY)  # converting the image to grayscale image
    resized_image = cv2.resize(Gray_image, (width, height))  # Resize the image 
    mean, stdDev = cv2.meanStdDev(resized_image)  #Get Mean and Standard-deviation
    Normalized_image = (resized_image-mean)/stdDev  #Normalize the image  
    # Scale the normalized values to integer range
    Normalized_image -= Normalized_image.min() 
    Normalized_image /= Normalized_image.max()
    Normalized_image *= 255 # [0, 255] range

    return  Normalized_image

Как я могу решить эту проблему?


person Sara    schedule 25.11.2019    source источник
comment
Ваш Normalized_Image относится к типу float64. Убедились ли вы, (а) что сопоставление с шаблоном в целом работает с float64, и если да, то (б) ваш шаблон также относится к типу float64?   -  person HansHirse    schedule 25.11.2019


Ответы (1)


В любом случае вы должны проверить ответ @HansHirse, если проблема даже в вашей предварительной обработке, вы можете попробовать это:

def Image_Preprocessing (image):
    Gray_image = cv2.cvtColor(image , cv2.COLOR_BGR2GRAY)  # converting the image to grayscale image
    resized_image = cv2.resize(Gray_image, (width, height))  # Resize the image
    Normalized_image = np.array(np.divide(resized_image, np.amax(resized_image)), dtype=np.float64) # Normalizes to float 0 - 1, ensure float
    # Scale the normalized values to integer range
    Normalized_image *= 255 # [0, 255] range
    Normalized_image = np.uint8(Normalized_image)

    return  Normalized_image

Это возвращает изображение uint8, если ваш шаблон также uint8, проблем быть не должно.

person code-lukas    schedule 25.11.2019
comment
большое спасибо, проблема решилась добавлением этой строки Normalized_image = np.uint8(Normalized_image) - person Sara; 25.11.2019