Python выходит в произвольное время без исключения при запуске OpenCV - PullRequest
0 голосов
/ 07 ноября 2019

Впервые спрашивая, я не нашел никаких ответов на это после нескольких дней поиска. Кроме того, я абсолютно не программист, так что я мог упустить что-то очевидное.

Я запускаю код, который просматривает большую библиотеку изображений (около 2M) и извлекает из них информацию. Код работает нормально в течение нескольких итераций (20-10000ish), но затем программа просто останавливается без сообщений об ошибках.

Основной код завершает работу (завершается?) Большую часть времени при обнаружении краев OpenCV или скачках, ноне всегда. примерно в 10% случаев это происходит в каком-то другом месте кода.

Использование:

OpenCV 4.1.1 Python 3.7.1 Windows 10

Изображение в: https://www.dropbox.com/s/5lfzkw6sqmu73eb/Image_00_00_00_00.bmp?dl=0

Я пытался получить исключение из кода Opencv, но ничего не появляется. Последняя попытка в коде ниже.

Я пытался использовать модули трассировки и журнала, но я не могу заставить их сделать что-нибудь полезное.

import numpy as np
import cv2
import traceback
import sys


def cropping_points2(img):

    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)             # Gray image needed for edge detection
    try: 
        edges = cv2.Canny(gray,20,70,apertureSize = 3)
    except Exception as e:
        print(traceback.format_exc())
        print(sys.exc_info())
        print(e, 'there was actually an exception!')  
        exit() 
    lines = []

    try:
        lines = cv2.HoughLines(edges,3,np.pi/180,65, 50, 10, min_theta = 1.4, max_theta = 1.75)    # analyse image to find lines - thetha setting looks for horizontal

    except Exception as e:
        print(traceback.format_exc())
        print(sys.exc_info())
        print(e, 'there was actually an exception!')    
        exit() 

    if lines is None:                                                                             # All black images return a NoneType image
        print('no lines!')                                                                      # Capture NoneType without crashiing
        rect = []
        has_lines = False
        return rect , has_lines
    has_lines = True      
    return lines[0][0], has_lines 


if __name__ == "__main__":
    img= cv2.imread('Image_00_00_00_00.bmp')
    for index in range(10000):
        rect, has_lines = cropping_points2(img)
        print(rect)
        print(index)

Я ожидаю, что программа подскажет мне, почему она перестает работать = |

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...