python - 为什么 cv2 显示空白的灰色方 block ?

标签 python cv2

我有一个使用 cv2 库的 python 程序,它选择一个随机的美国州,从一个文件夹中提取该州的图像并显示它。它工作正常,所以我保存了它,突然间,它没有显示图像,而是显示一个空白的灰色方块并崩溃。为什么会这样,我该如何解决?这是示例图像:
sample image
second sample image
和继承人的代码:

import cv2
import random
import time

#makes a list of the states
def states():
    states = ['alabama','alaska','arizona','arkansas','california',
    'colorado','connecticut','deleware','florida','georgia','hawaii',
    'idaho','illinois','indiana','iowa','kansas','kentucky','louisiana',
    'maine','maryland','massachussets','michigan','minnesota',
    'mississipi','missouri','montana','nebraska','nevada',
    'new_hampshire','new_jersey','new_mexico','new_york',
    'north_carolina','north_dakota','ohio','oklahoma','oregon',
    'pennsylvania','rhode_island','south_carolina','south_dakota',
    'tennessee','texas','utah','vermont','virginia','washington',
    'west_virginia','wisconsin','wyoming']
    while True:
        #choose a random state from the states list
        state = random.choice(states)
        #take a picture from the states folder, and display it
        img = cv2.imread('picture_files/states/' + state + '.png') 
        cv2.imshow('guess the state!', img)
        #checks if you typed the right state,
        #and gives an appropriate response
        guess = input("guess the state! (type stop to stop!)\n")
        if guess.lower() == state:
            print("Correct!")
            time.sleep(2)
            print("Lets do it again!")
        elif guess.lower() == "stop":
            break
        else:
            print("Nope! It was " + state + ". Keep trying!")
            time.sleep(2)

if __name__ == '__main__':
    states()

最佳答案

基本上你错过了一些 cv2.waitKey()显示图像的函数(另见 here)。
这是一个可能的解决方案示例。

def pick_a_state():
    states = ['a','b'] # replace with your list
    return random.choice(states)

def show_state(state):
    img = cv2.imread(state + '.png', cv2.IMREAD_UNCHANGED)
    cv2.imshow('guess the state!', img)
    cv2.waitKey(1000)

def get_the_answer(state):
    guess = raw_input("guess the state! (type stop to stop!)\n")
    if guess.lower() == state:
        print(state)
        print("Correct!")
        time.sleep(2)
        print("Lets do it again!")
        return 1
    elif guess.lower() == "stop":
        return 0
    else:
        print("Nope! It was " + state + ". Keep trying!")
        time.sleep(2)
        return 1

if __name__ == '__main__':
    while True:
        state = pick_a_state()
        show_state(state)
        if get_the_answer(state) == 0:
            cv2.destroyAllWindows()
            break
请分析代码以了解其工作原理。希望能帮上忙。

关于python - 为什么 cv2 显示空白的灰色方 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68633144/

相关文章:

python - 连接两行,如果它们不为空

python - 语法错误 : Non-ASCII character '\xd1' in file modules/commands.

python - 使用 Gmail API 获取 Google 群组电子邮件

python - TypeError:labels不是numpy数组,也不是标量

python - 如何显示保存到变量的绘图?

python - 将多个具有层次结构的 pd.DataFrame 保存到 hdf5

python - 使用 MoviePy 修复未最终的 .flv 视频

python - 使用python 3.6和opencv-python cv2时出错

python - 防止 16 位图像数据的自动缩放

python - 无法导入 cv2 模块(Python 3.6)