Невозможно загрузить изображение в окно, используя cv2.Imshow - PullRequest
0 голосов
/ 31 января 2019

Я пытался создать инструмент OCR, следуя этому учебнику на youtube , и используя следующий скрипт:

import os
import sys

import cv2
import numpy as np

input_f = 'letter.data'

img_resize_factor = 12
start, end = 6, -1
height, width = 16, 8

with open(input_f, 'r') as f:
    for line in f.readlines():
        data = np.array([255*float(x) for x in line.split('\t')[start:end]])
        img = np.reshape(data, (height, width))
        img_scaled = cv2.resize(img, None, fx=img_resize_factor, fy=img_resize_factor)
        print(line)
        cv2.imshow('img', img_scaled)

        c = cv2.waitKey()
        if c == 27:
            break

Код падает при попытке использовать cv2.imshow('img', img_scaled)однако окно не отвечает, и изображение не загружается в него.

Я использую самую последнюю версию OpenCV, я запускаю ее в VisualStudio, и мне пришлось добавить "python.linting.pylintArgs": ["--extension-pkg-whitelist=cv2"] внастройки пользователя.

Я получаю сообщение об ошибке:

Исключение: cv2.error OpenCV (4.0.0) c: \ projects \ opencv-python \ opencv \ modules\ imgproc \ src \ color.hpp: 261: ошибка: (-2: неопределенная ошибка) в функции '__cdecl cv :: CvtHelper, struct cv :: Set <3,4, -1>, struct cv :: Set <0, 2,5>, 2> :: CvtHelper (константный класс cv :: _ InputArray &, константный класс cv :: _ OutputArray &, int) '> Неподдерживаемая глубина входного изображения:>
' VDepth :: содержит (глубина)'> где>' глубина 'равна 6 (CV_64F) файла "C: \ Users \ aofarrell \ Desktop \ Python \ NeuralNetworks \ SimpleOCR.py", строка 23, в перерыве

1 Ответ

0 голосов
/ 31 января 2019

Все в вашем скрипте неверно.

Решение

1) Если вы открываете файл, откройте только файл, получите данные и выйдите из with Statement

2) Ошибка, которую вы испытываете из-за неправильной формы

Я открыл файл и извлек изображения

import os
import sys
import cv2
import numpy as np

input_f = 'letter.data'
start, end = 6, -1



def file_opener(input_f):
    with open(input_f,'r') as fl:
        for line in fl.readlines():
            yield np.array([255*float(x) for x in line.split('\t')[start:-1]])

iterator = file_opener(input_f)
images = np.array([row for row in iterator]).reshape(52152,16,8)  # array with 52152 images


for image_index in range(images.shape[0]):
    IMAGE = cv2.resize(images[image_index,:],(0,0),fx=5,fy=5)
    cv2.imshow('image {}/{}'.format(image_index,images.shape[0]),IMAGE)
    cv2.waitKey(0)
cv2.destroyAllWindows(0)

enter image description here

...