На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём защитника отечества!



msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
  
> Задача о поиске книг на картинке на Python с применением библиотеки OpenCV, Проблемы с апроксимацией и нахождением вершин фигуры
Добрый день! Я - новичок в Python и начал изучать OpenCV по примерам на этом сайте:
https://tproger.ru/translations/finding-books-python-opencv/
Первые три примера благополучно создались, но с циклом поиска книг начались проблемы, которые связаны с функцией arclenght. Подскажите, пожалуйста, где на что нужно заменить. Это мой первый опыт, инструкции к библиотеке не читал, работаю в Anaconda 2019 и Python 3.7 через программу PyCharm Community (картинка лежит в одной папке с проектом), проверяю её работоспособность на этом примере:

Исходный код:
ExpandedWrap disabled
    # -*- 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)


Ошибки:
ExpandedWrap disabled
    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 ничего не получилось? Я пробовал

ExpandedWrap disabled
    runfile("C:/untitled/opencv_demo1.py", wdir="C:/untitled")


Компилятор выдал, что эта функция не определена.

ExpandedWrap disabled
    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
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,1851 ]   [ 21 queries used ]   [ Generated: 25.02.20, 21:57 GMT ]