无法使用cv2.Imshow将图像加载到窗口中

时间:2019-01-31 13:37:53

标签: python opencv opencv3.0 cv2

我一直在尝试遵循此tutorial on youtube并使用以下脚本来生产OCR工具:

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:   错误:函数'__cdecl中的(-2:未指定错误)   cv :: CvtHelper,结构cv :: Set <3,4,-1>,结构   cv :: Set <0,2,5>,2> :: CvtHelper(const class cv :: _ InputArray&,const class   cv :: _ OutputArray&,int)'>输入图像的深度不受支持:>
  'VDepth :: contains(depth)'>其中>'depth'是6(CV_64F)文件   “ C:\ Users \ aofarrell \ Desktop \ Python \ NeuralNetworks \ SimpleOCR.py”,行   23在       打破

1 个答案:

答案 0 :(得分:0)

脚本中的所有内容都是错误的。

解决方案

1)如果要打开文件,则仅打开文件,获取数据并退出with语句

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