【发布时间】:2016-04-06 12:28:42
【问题描述】:
我一直在想办法在 pygame 上将 Gabor 补丁呈现到黑色背景上,并且一直在努力做到这一点。我通常可以独立完成每个元素 - 所以 a) 我可以显示黑色背景屏幕,b) 我可以单独运行这组代码并让 Gabor 补丁出现在它自己的单独屏幕上:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
size = np.linspace(-np.pi,np.pi,200)
xgrid, ygrid = np.meshgrid(size, size)
gaussian = np.exp(-(xgrid/2)**2-(ygrid/2)**2)
sine = np.sin(xgrid*10)
gabor = sine * gaussian
plt.imshow(gabor,cm.gray)
plt.show()
但我想要的是能够让 Gabor 补丁出现在黑色 Pygame 屏幕本身的预定位置。我看过一些关于在 Pygame 中呈现图像的 youtube 教程,并尝试了以下方法(没有成功):
from win32api import GetSystemMetrics
import sys
import pygame
from pygame.locals import *
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import matplotlib.image as mpimg
import time
pygame.init()
Clock= pygame.time.Clock()
FPS =30
screenWidth=GetSystemMetrics(0)
screenHeight=GetSystemMetrics(1)
fullScreenSize=(screenWidth/2,screenHeight/2)
gameDisplay=pygame.display.set_mode(fullScreenSize)
BLACK = (0,0,0)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT or event.type == KEYUP:
pygame.quit()
size = np.linspace(-np.pi,np.pi,200)
xgrid, ygrid = np.meshgrid(size, size)
gaussian = np.exp(-(xgrid/2)**2-(ygrid/2)**2)
sine = np.sin(xgrid*10)
gabor = sine * gaussian
x = ((screenWidth/2) * 0.3) #Left on the x-axis
y = ((screenHeight/2) * 0.45) #Mid-height on screen
#MY ATTEMPT TO SPECIFY A GABOR THAT IS TO BE PRESENTED ON THE LEFT SIDE OF THE SCREEN
def LeftGabor (x,y):
gameDisplay.blit(gabor,(x,y))
gameDisplay.fill(BLACK)
gameDisplay.blit(gabor,(x,y))
LeftGabor(x,y)
pygame.display.update()
Clock.tick(FPS)
使用此代码,所发生的只是弹出一个黑屏。没有其他的。有人可以指出我做错了什么并指出正确的方向吗?
【问题讨论】:
-
-1 :您的代码没有格式化(缩进),很难阅读并且包含很多不相关的信息。您确实可以在 pygame 中渲染 numpy 数组,有一些类似的问题关于如何做到这一点,例如参见 my answer here
标签: python python-2.7 pygame