2017-09-11 164 views
0

我有一組圖像,它是由另一個python腳本「image_generator.py」以某種速度動態生成的。我想動態顯示這些圖像。有沒有什麼方法可以讓我用來自「image_generator.py」的新生成的圖像更新我的圖像?如何使用opencv python以特定的時間間隔更新圖像的繪圖窗口?

+1

當然,爲什麼不直接在循環中生成它們並在路上用'imshow'顯示它們呢?圖像是通過調用函數生成的嗎?像'img = image_generator.some_function()'? –

回答

1

image_generator.py

import numpy 


def generate(height, width, channels): 
    img = numpy.random.rand(height, width, channels) 
    img = (255*img).astype(numpy.uint8) 
    return img 

example.py

import cv2 
from image_generator import generate 

n_images = 20 
height = 200 
width = 200 
channels = 3 

for n in range(n_images): 
    img = generate(height, width, channels) 
    cv2.imshow('Random image', img) 
    k = cv2.waitKey(200) 
    if k == ord('q') & 0xFF: 
     break 

請注意,這是沒有比他們在同一個Python的文件不同。一旦從另一個模塊導入,就可以訪問它們在Python腳本中的功能。

+0

嗨亞歷山大, 我一直在尋找的東西。我試圖以同樣的方式,但由於圖像尺寸太大,它被吊死。我裁剪圖像,現在順利運行。 –

+0

因爲Python是一種解釋型語言,所以直到函數解析並且'img'有一個值,它纔會顯示圖像。我假設你的掛斷是由於除了圖像太大以外的其他東西。我剛剛嘗試過一個'5000x5000x3'的圖像和這個腳本一起運行良好(當然,生成圖像的計算需要一點點時間,但不會超過一秒鐘左右)。 –