Ошибка при проверке плоскости контуров: Assertion failed npoints >= 0 && (depth == CV_32F || depth == CV_32S) in function 'cv::contourArea'

Вот полный текст ошибки:

cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-sn_xpupm\opencv\modules\imgproc\src\shapedescr.cpp:315: error: (-215:Assertion failed) npoints >= 0 && (depth == CV_32F || depth == CV_32S) in function 'cv::contourArea'

Вот мой код:

# OpenCV #
import cv2
import numpy

# Data Load
image = cv2.imread(r"D:\Vladyslav Kryvoruchko\HW - Home Work Maker\hw\scaner\shaded.png")

# Black Like Image
black = numpy.zeros_like(image)

# Grayscale
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
ret2, th2 = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

# I copied this from stackoverflow
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
threshed = cv2.morphologyEx(th2, cv2.MORPH_CLOSE, kernel)

# Contuors
imgContours, Contours = cv2.findContours(threshed, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for contour in Contours:

    # Checking contors area
    if cv2.contourArea(contour) > 200:

        # Coordinates Of Symbols
        [X, Y, W, H] = cv2.boundingRect(contour)

        # Bounding Boxes
        cv2.rectangle(image, (X, Y), (X + W, Y + H), (0,0,255), 2)
        cv2.rectangle(black, (X, Y), (X + W, Y + H), (0,255,0), 2)

cv2.imshow('contour', image)
cv2.imshow('black', black)

Как найти символы на изображении я нашел на Stackoverflow. Но ответ там был с багами, я промучился с этим 2 часа. Что я делаю не так?

Помогите, пожалуйста!

PS: Если я делаю совсем что-то не то, то перепишите мой код пожалуйста! Моя цель: найти символы на изображении, и потом сохранить их в отдельные файлы для дальнейшей обработки.


Ответы (0 шт):