Невозможно получить выходное изображение - PullRequest
0 голосов
/ 03 апреля 2019

Я довольно новичок в python и openCV, и я экспериментировал с некоторым кодом, который я нашел в Интернете. так что спасибо заранее за помощь хотя я использую функцию imshow (), определенную в opencv, я не могу отобразить изображение

from __future__ import division
from __future__ import print_function

import random
import numpy as np
import cv2


def main():
    "put img into target img of size imgSize, transpose for TF and normalize gray-values"

    img=cv2.imread("C:\\Users\\bnsid\\Desktop\\a01-003-00-02.png", cv2.IMREAD_GRAYSCALE)
    imgSize=(128,32)
    dataAugmentation = True
    if img is None:
        img = np.zeros([imgSize[1], imgSize[0]])

    # dataaugmentation
    if dataAugmentation:
        stretch = (random.random() - 0.5) # -0.5 .. +0.5
        wStretched = max(int(img.shape[1] * (1 + stretch)), 1) # random width, but at least 1
        img = cv2.resize(img, (wStretched, img.shape[0])) # stretch horizontally by factor 0.5 .. 1.5

    # create target image and copy sample image into it
    (wt, ht) = imgSize
    (h, w) = img.shape
    fx = w / wt
    fy = h / ht
    f = max(fx, fy)
    newSize = (max(min(wt, int(w / f)), 1), max(min(ht, int(h / f)), 1)) # scale according to f (result at least 1 and at most wt or ht)
    img = cv2.resize(img, newSize)
    target = np.ones([ht, wt]) * 255
    target[0:newSize[1], 0:newSize[0]] = img

    # transpose for TF
    img = cv2.transpose(target)

    # normalize
    (m, s) = cv2.meanStdDev(img)
    m = m[0][0]
    s = s[0][0]
    img = img - m
    img = img / s if s>0 else img
    cv2.imshow('Greyscale_Stretched', img)
    k= cv2.waitKey(0) & 0xFF
    if k == 27:  # wait for ESC key to exit
        cv2.destroyAllWindows()
    elif k == ord('s'):  # wait for 's' key to save and exit
        cv2.imwrite('grey.png', img)
        cv2.destroyAllWindows()

1 Ответ

0 голосов
/ 03 апреля 2019

Только что проверил ваш код.Вам нужно где-то вызвать функцию main().Поскольку вы этого не сделали, функция не выполняется.

просто добавьте main() в конец кода, и все работает.

def main():
    #your code here
    print("placeholder")


main()

Функция main()Вы объявили и определили здесь не действует как функция ввода main() в C ++.Если вы хотите подобное поведение, используйте это:

def function_name():
    print('placeholder')

if __name__ == '__main__':   
    function_name() #for eg: main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...