#python #opencv
#python #opencv
Вопрос:
я довольно новичок в 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) amp; 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:
Только что протестировал ваш код. Вам нужно где-то вызвать 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()
Комментарии:
1. большое вам спасибо, только что понял, насколько глупой была эта ошибка