# coding: utf-8 import pygame ##import numpy from pygame.locals import * from OpenGL.GL import * from OpenGL.GLU import * #from OpenGL.GLUT import * import Image,cv def init(window_size): w, h = window_size glClearColor(0.0, 0.0, 0.0, 0.0) glEnable(GL_DEPTH_TEST) glViewport(0, 0, w, h) glMatrixMode(GL_PROJECTION) glLoadIdentity() ##gluPerspective(60.0, float(w) / float(h), 1.0, 100.0) glMatrixMode(GL_MODELVIEW) def draw(tex): glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glMatrixMode(GL_MODELVIEW) glLoadIdentity() gluLookAt(0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0) glTranslatef(0, 0, -1) glRotatef(angle, 1, 1, 1) glTranslatef(0, 0, 1) # テクスチャマップを有効にする glEnable(GL_TEXTURE_2D) # 1 つ目のテクスチャを設定 glBindTexture(GL_TEXTURE_2D, tex) # テクスチャマップの方法を設定 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) glBegin(GL_QUADS) # 四角形を描く glTexCoord2f(0.0, 1.0) # テクスチャ画像での位置を指定 glVertex3f(-1.0, -1.0, -1.0) # 頂点をセット glTexCoord2f(1.0, 1.0) glVertex3f(1.0, -1.0, -1.0) glTexCoord2f(1.0, 0.0) glVertex3f(1.0, 1.0, -1.0) glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, 1.0, -1.0) glEnd() glFlush() def exit_check(event, inkey=None): if event.type == QUIT: return True if inkey is not None: if event.type == KEYDOWN and event.key == inkey: return True return False def hoge(): image=cv.LoadImage('hoge.jpg') cv.CvtColor(image ,image, cv.CV_BGR2RGB) cv.Flip(image,image,1) #image=image.transpose(Image.FLIP_LEFT_RIGHT) texture=OpenGL.GL.glGenTextures(1) OpenGL.GL.glBindTexture(GL_TEXTURE_2D, texture) OpenGL.GL.glTexParameteri(OpenGL.GL.GL_TEXTURE_2D,OpenGL.GL.GL_TEXTURE_MAG_FILTER,OpenGL.GL.GL_LINEAR) OpenGL.GL.glTexParameteri(OpenGL.GL.GL_TEXTURE_2D,OpenGL.GL.GL_TEXTURE_MIN_FILTER,OpenGL.GL.GL_LINEAR) ## OpenGL.GLU.gluBuild2DMipmaps(OpenGL.GL.GL_TEXTURE_2D, OpenGL.GL.GL_RGB, image.size[0], image.size[1], ## OpenGL.GL.GL_RGB, OpenGL.GL.GL_UNSIGNED_BYTE, image.tostring()) OpenGL.GLU.gluBuild2DMipmaps(OpenGL.GL.GL_TEXTURE_2D, OpenGL.GL.GL_RGB, image.width, image.height, OpenGL.GL.GL_RGB, OpenGL.GL.GL_UNSIGNED_BYTE, image.tostring()) return texture def main(): global angle window_size = (500, 500) screen = pygame.display.set_mode(window_size, OPENGL | DOUBLEBUF, ) pygame.display.set_caption('hoge') init(window_size) clock = pygame.time.Clock() tex = hoge() while True: clock.tick(60) angle += 4.0 angle %= 360 draw(tex) ##screen.fill((150,150,150),Rect(0,0,80,80)) pygame.display.flip() for event in pygame.event.get(): if exit_check(event, K_ESCAPE): return angle = 0.0 if __name__ == '__main__': pygame.init() main() pygame.quit()