[vtk-developers] Implementing my own camera class and wrapping it to Python

Skotheim , Oystein oystein.skotheim at tecnalia.com
Tue Mar 19 12:55:17 EDT 2013


Hello. I am trying to use VTK for Augmented Reality. I need to be able 
to manipulate the projection and modelview transform directly, and I 
could not find a convenient way to do it with vtkCamera or 
vtkOpenGLCamera (Is there any way to do it?).

For that reason, I have tried to implement a new camera class: 
vtkOpenCVCalibratedCamera, which basically is a copy of vtkOpenGLCamera 
but it contains functionality for setting the projection and model view 
matrices directly. I have gotten this to work in C++ now.

I would also like to be able to access this from Python. I tried to copy 
vtkOpenCVCalibratedCamera.{cxx,h} into the Rendering directory of the 
VTK source distribution, and then I appended vtkOpenCVCalibrated.cxx to 
the KitOpenGL_SRCS variable in the Rendering/CMakeLists.txt file. I am 
able to compile VTK including the Python wrapper and obtain a vtkpython 
file. However, when I try to import vtk I get the following error:

oystein at prtgb370:~/src/VTK-5.8.0/build/bin$ ./vtkpython
vtk version 5.8.0
Python 2.7.3 (default, Aug  1 2012, 05:27:35)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
 >>> import vtk
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File 
"/home/oystein/src/VTK-5.8.0/build/Wrapping/Python/vtk/__init__.py", 
line 76, in <module>
     __helper.refine_import_err('hybrid', 'vtkHybridPython', exc)
   File 
"/home/oystein/src/VTK-5.8.0/build/Wrapping/Python/vtk/__helper.py", 
line 32, in refine_import_err
     raise LinkError, str(exc)
vtk.__helper.LinkError: 
/home/oystein/src/VTK-5.8.0/build/bin/libvtkRenderingPythonD.so.5.8: 
undefined symbol: 
_ZN25vtkOpenCVCalibratedCamera14UpdateViewportEP11vtkRenderer

Do you have any idea why this error is occurring? (My class contains an 
UpdateViewport method both in the header and the implementation file).

BTW. Is there any way I can add a Python interface to my new class 
without having to recompile the entire VTK? I tried to add a Python 
interface with SWIG, but I am unable e.g. to pass this 
vtkOpenCVCalibratedCamera (in vtk_extensions.pyd) to a vtkRenderer 
(contained in the main vtk Python wrapper). I guess this is not the way 
to do it, but where can I find information about how to wrap my class 
properly for Python?

Best regards,

-- 
Øystein Skotheim
Investigador Senior - Área de Negocio de Robótica
TECNALIA

-------------- next part --------------
A non-text attachment was scrubbed...
Name: vtkOpenCVCalibratedCamera.cxx
Type: text/x-c++src
Size: 6865 bytes
Desc: vtkOpenCVCalibratedCamera.cxx
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20130319/bd694188/attachment-0001.cxx>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vtkOpenCVCalibratedCamera.h
Type: text/x-chdr
Size: 1142 bytes
Desc: vtkOpenCVCalibratedCamera.h
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20130319/bd694188/attachment-0001.h>


More information about the vtk-developers mailing list