Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.167.196] |
|
Сообщ.
#1
,
|
|
|
Добрый день! Я - новичок в Python и начал изучать OpenCV по примерам на этом сайте:
https://tproger.ru/translations/finding-books-python-opencv/ Первые три примера благополучно создались, но с циклом поиска книг начались проблемы, которые связаны с функцией arclenght. Подскажите, пожалуйста, где на что нужно заменить. Это мой первый опыт, инструкции к библиотеке не читал, работаю в Anaconda 2019 и Python 3.7 через программу PyCharm Community (картинка лежит в одной папке с проектом), проверяю её работоспособность на этом примере: Исходный код: # -*- coding: utf-8 -*- # импортируйте необходимые пакеты import numpy as np import cv2 # загрузите изображение, смените цвет на оттенки серого и уменьшите резкость image = cv2.imread("1-3.jpg") gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur(gray, (3, 3), 0) cv2.imwrite("gray.jpg", gray) # распознавание контуров edged = cv2.Canny(gray, 10, 250) cv2.imwrite("edged.jpg", edged) # создайте и примените закрытие kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7)) closed = cv2.morphologyEx(edged, cv2.MORPH_CLOSE, kernel) cv2.imwrite("closed.jpg", closed) # найдите контуры в изображении и подсчитайте количество книг cnts = cv2.findContours(closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[1] total = 0 # цикл по контурам for c in cnts: # аппроксимируем (сглаживаем) контур peri = cv2.arcLength(c, True) approx = cv2.approxPolyDP(c, 0.02 * peri, True) # если у контура 4 вершины, предполагаем, что это книга if len(approx) == 4: cv2.drawContours(image, [approx], -1, (0, 255, 0), 4) total += 1 # показываем результирующее изображение print("Я нашёл {0} книг на этой картинке".format(total)) cv2.imwrite("output.jpg", image) Ошибки: D:\Python\python.exe C:/untitled/opencv_demo1.py Traceback (most recent call last): File "C:/untitled/opencv_demo1.py", line 28, in <module> peri = cv2.arcLength(c, True) cv2.error: OpenCV(4.1.2) D:\Build\OpenCV\opencv-4.1.2\modules\imgproc\src\shapedescr.cpp:239: error: (-215:Assertion failed) count >= 0 && (depth == CV_32F || depth == CV_32S) in function 'cv::arcLength' Process finished with exit code 1 Почему через runfile в web-интерфейсе Jupyter Notebook ничего не получилось? Я пробовал runfile("C:/untitled/opencv_demo1.py", wdir="C:/untitled") Компилятор выдал, что эта функция не определена. NameError Traceback (most recent call last) <ipython-input-3-3b5b44b0deb8> in <module> ----> 1 runfile("C:/untitled2/calculator.py", wdir="C:/untitled2") NameError: name 'runfile' is not defined |