Функция cv2.imshow () не показывает изображение, если пользовательский ввод взят, но работает иначе - PullRequest
0 голосов
/ 18 июня 2019

Я пишу код для создания пользовательских сеток на белом изображении 500x500.Программа должна запросить у пользователя информацию о размере сетки и соответственно нарисовать вертикальные и горизонтальные линии и, наконец, отобразить изображение.

Проблема, с которой я сталкиваюсь, заключается в том, что изображение не отображается, когда я вызываю "getGridSize ()"функция.Но отображение изображения работает, когда я вручную присваиваю значение переменной 'num'

. Я тоже пытался использовать cv2.waitKey (0) и cv2.destroyAllWindows (), но безуспешно.

import cv2
import numpy as np

width = 500 # Dimensions of the blank, white image

def main():
##    getGridSize()
    num = 4

    generateWhiteImg()
    lineImg = whiteImg.copy() # Create a copy of the white image to draw upon

    for i in range(0, num):
        spacing = int(width / (num + 1))    # Specify the width between each line, for uniform placement
        point = (i + 1) * spacing   # Change the coordinate of the lines to be drawn by fixed amounts
        lineImg = cv2.line(lineImg, (0, point), (width, point), (0, 0, 0), 3)   # Draw horizontal lines
        lineImg = cv2.line(lineImg, (point, 0), (point, width), (0, 0, 0), 3)   # Draw vertical lines

    cv2.imshow('LINES', lineImg)

## Function to get grid size from user
def getGridSize():
    global num # Stores the size of grid to be drawn
    num = input("Enter the size of blank grid: ")
    num = int(num) # To convert string to integer

## Function to generate a blank, white image
def generateWhiteImg():
    global whiteImg
    img = np.zeros((width, width, 3), np.uint8) # Generate a zeros list, i.e., a black image
    img[:width] = (255, 255, 255) # Convert black image to white
    cv2.imwrite('whiteImg.png', img) # Save the white image
    whiteImg = cv2.imread('whiteImg.png')   # Load the same from directory

if __name__ == "__main__":
    main()

Нет сообщений об ошибках.Я ожидал, что код будет работать как есть.Я думаю, что проблема в функции getGridSize ()

ОБНОВЛЕНИЕ 1: я использую Python 3.5.4 для этого

1 Ответ

0 голосов
/ 18 июня 2019

Когда вы делаете GUI с OpenCV, вам всегда нужно вызывать метод cv2.waitKey() впоследствии. Он обеспечивает отображение окна и определяет, как долго окно будет оставаться открытым .

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