WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   opencv with vizard 4 (https://forum.worldviz.com/showthread.php?t=3696)

Darkmax 04-07-2011 04:58 PM

opencv with vizard 4
 
Now that vizard 4 use python 2.7, some one had tried to use vizard with opencv?, i tried to install but i can't get it work.

I would like run opencv with vizard for a project that i had.

Darkmax 04-09-2011 01:02 AM

some one?? i check on the forum for open cv but is for 1.0 version, and i would like for 2.1 i some know how to use vizard with open cv 2.1

Darkmax 04-10-2011 10:33 AM

Ok, i'm experiment with opencv and this what i got:

1) I installed OpenCV-2.2.0-win32-vs2010.exe from the opecv site and i choose to install the system variables for all users.

2) I installed numpy-1.5.1-win32-superpack-python2.7.exe (because it seems that opecv need it)

3) I copy the files of C:\OpenCV2.2\Python2.7\Lib\site-packages to C:\Program Files (x86)\WorldViz\Vizard4\bin\lib\site-packages

4) i tried this code in vizard and it WORKS!!!:
Code:

import cv

cv.NamedWindow("camera", 1)
capture = cv.CaptureFromCAM(0)

while True:
    img = cv.QueryFrame(capture)
    cv.ShowImage("camera", img)
    if cv.WaitKey(10) == 27:
        break
cv.DestroyWindow("camera")

The problem is that when i tried this with another code like this one:
Code:

import Image
import cv
import viz

viz.go()

def PIL_TO_VIZARD(image,texture):
    """Copy the PIL image to the Vizard texture"""
    im = image.transpose(Image.FLIP_TOP_BOTTOM)
    texture.setImageData(im.convert('RGB').tostring(),im.size)

capture = cv.CaptureFromCAM(-1)#conectate a camara

tex = viz.addBlankTexture([1,1])
quad = viz.addTexQuad(pos=(0,1.8,2),texture = tex)

while True:
    src = cv.QueryFrame(capture)
    dst = cv.CreateImage(cv.GetSize(src),cv.IPL_DEPTH_8U,1)
    cv.CvtColor( src, dst, cv.CV_RGB2GRAY)
    #Convierto opencv to PIL image
    pil = Image.fromstring("L", cv.GetSize(dst), dst.tostring())
    #Aply image to texture
    PIL_TO_VIZARD(pil,tex)
   
    if cv.WaitKey(10) == 27:
        break

When i run this code it consumes me a lot of ram and then it freeze the machine
If anyone has a clue of what maybe is happening

nige777 04-11-2011 03:54 AM

Hi DarkMax,

Just wondering if you had any luck with this? All I get when is a black screen in the cvWindow instead of the stream from the webcam, most other samples from OpenCV seem to work although I haven't tried them all.

This would be a total game changer for me if Viz 4 and OpenCV can be made to play well together . . . . . . .

Darkmax 04-12-2011 06:15 AM

not yet, i'm still looking

Darkmax 04-22-2011 01:13 PM

Some that know why i can pass the image from the camera to a plane in vizard?

Darkmax 05-11-2011 11:20 AM

I resolve the problem, now i have opencv and vizard working together, just i have to use the viztask.schedule() command on the method that i use for opencv

nige777 05-12-2011 02:35 AM

Hi Darkmax,

Thats fantastic news, I'm still struggling to get openov to play nicely with Vizard, am even thinking of trying with pyopencv when I get a chance (writing writing writing at the moment :( ).

However, would it be possible for you to give me some advise as to how you have managed to get them working with each other, just a few pointers to get me started - I can use opencv with the highgui window, but am getting stuck trying to pass the video frames to the vizard render window :confused: :confused:.

Any advise would be really welcome,

best regards

Darkmax 05-13-2011 06:14 AM

try this code:
Code:

import Image
import cv
import viz
import viztask

#Quad to display the image on vizard
tex = viz.addBlankTexture([1,1])
quad = viz.addTexQuad(pos=(0,1.8,2),texture = tex)

def PIL_TO_VIZARD(image,texture):
    """Copy the PIL image to the Vizard texture"""
    im = image.transpose(Image.FLIP_TOP_BOTTOM)
    texture.setImageData(im.convert('RGB').tostring(),im.size)

def opencvMain():
        capture = cv.CaptureFromCAM(-1)#conect to a camera
       
        while True:
                src = cv.QueryFrame(capture) #Image from camera in BGR format
                dst = cv.CreateImage(cv.GetSize(src),cv.IPL_DEPTH_8U,3)
                cv.CvtColor( src, dst, cv.CV_BGR2RGB) #Converting BGR to RGB
               
                #Converting opencv image to PIL image
                pil = Image.fromstring("RGB", cv.GetSize(dst), dst.tostring())
               
                #Aply image to texture
                PIL_TO_VIZARD(pil,tex)
               
                cv.WaitKey(10)
                yield viztask.waitTime(0)
               
viztask.schedule(opencvMain())

viz.go()



All times are GMT -7. The time now is 09:15 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC