Catalin George Festila: OpenGL and OpenCV with python 2.7 - part 001.

Datetime:2016-08-22 22:42:27          Topic: Python  OpenGL  OpenCV           Share

First you need to know what version of python you use.

C:\Python27>python

Python 2.7.8 (default, Jun 30 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>>

You need also to download the OpenCV version 3.o from here .

Then run the executable into your folder and get cv2.pyd file from \opencv\build\python\2.7\x64 and paste to \Python27\Lib\site-packages .

If you use then use 32 bit python version then use this path: \opencv\build\python\2.7\x86 .

Use pip to install next python modules:

C:\Python27\Scripts>pip install PyOpenGL

...

C:\Python27\Scripts>pip install numpy

...

C:\Python27\Scripts>pip install matplotlib

...

Let's see how is working OpenGL:

C:\Python27>python

Python 2.7.8 (default, Jun 30 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import OpenGL

>>> import numpy

>>> import matplotlib

>>> import cv2

>>> from OpenGL import *

>>> from numpy import *

>>> from matplotlib import *

>>> from cv2 import *

You can also use dir(module) to see more. You can import all from GL, GLU and GLUT.

>>> dir(OpenGL)

['ALLOW_NUMPY_SCALARS', 'ARRAY_SIZE_CHECKING', 'CONTEXT_CHECKING', 'ERROR_CHECKING', 'ERROR_LOGGING', 'ERROR_ON_COPY', 'FORWARD_COMPATIBLE_ONLY', 'FULL_LOGGING', 'FormatHandler', 'MODULE_ANNOTATIONS', 'PlatformPlugin', 'SIZE_1_ARRAY_UNPACK', 'STORE_POINTERS', 'UNSIGNED_BYTE_IMAGES_AS_STRING', 'USE_ACCELERATE', 'WARN_ON_FORMAT_UNAVAILABLE', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_bi', 'environ_key', 'os', 'plugins', 'sys', 'version']

>>> from OpenGL.GL import *

>>> from OpenGL.GLU import *

>>> from OpenGL.GLUT import *

>>> from OpenGL.WGL import *

If you are very good with python OpenGL module then you can import just like this example:

>>> from OpenGL.arrays import ArrayDatatype

>>> from OpenGL.GL import (GL_ARRAY_BUFFER, GL_COLOR_BUFFER_BIT,

...     GL_COMPILE_STATUS, GL_FALSE, GL_FLOAT, GL_FRAGMENT_SHADER,

...     GL_LINK_STATUS, GL_RENDERER, GL_SHADING_LANGUAGE_VERSION,

...     GL_STATIC_DRAW, GL_TRIANGLES, GL_TRUE, GL_VENDOR, GL_VERSION,

...     GL_VERTEX_SHADER, glAttachShader, glBindBuffer, glBindVertexArray,

...     glBufferData, glClear, glClearColor, glCompileShader,

...     glCreateProgram, glCreateShader, glDeleteProgram,

...     glDeleteShader, glDrawArrays, glEnableVertexAttribArray,

...     glGenBuffers, glGenVertexArrays, glGetAttribLocation,

...     glGetProgramInfoLog, glGetProgramiv, glGetShaderInfoLog,

...     glGetShaderiv, glGetString, glGetUniformLocation, glLinkProgram,

... glShaderSource, glUseProgram, glVertexAttribPointer)

Most of this OpenGL need to have a valid OpenGL rendering context.

For example you can test it with WGL ( WGL or Wiggle is an API between OpenGL and the windowing system interface of Microsoft Windows):

>>> import OpenGL

>>> from OpenGL import *

>>> from OpenGL import WGL

>>> print WGL.wglGetCurrentDC()

None

Now , let's see the OpenCV python module with s=one simple webcam python script:

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

This is result of my webcam:





About List