So I'm contemplating what language to use in the development of an app that uses OpenCV. As a part of my decision, I'm interested in knowing how easy/difficult it is to include the opencv library in the final app. I'd really like to write this in python because the opencv bindings are great, python's easy, etc.
But I haven't been able to find a clear answer on stuff like "does py2app automatically bundle opencv when it sees the import cv line" (I think not) and if not, then is there a known way to do this?
In general, I would like to know the best way to distribute a python desktop app with opencv.
I've effectively packaged, deployed, and shipped a Python app using OpenCV with cxFreeze.
http://cx-freeze.sourceforge.net/
Yes, cxFreeze auto picked up the python extensions to OpenCV. I had to manually copy the OpenCV DLLs (Windows), but that was a minor issue that can be solved by a post-processing step in cxFreeze. It does pick up other DLL's, so I'm not sure what the issue was.
In fact, it worked so well I was surprised. The ONLY thing it didn't pick up properly was a QT library. Basically here were my steps (I'm using QT so ignore that part if you aren't):
- cxfreeze App.py --target-dir App --base-name Win32GUI --include-modules PySide.QtNetwork
- Copy over the opencv\build\x86\vc9\bin files to the App directory.
That's it.
You can have a look at
http://www.pyinstaller.org/
It's great and it packages the necessary dll for opencv.
For opencv to work it py2exe also package numpy. Make sure you add a dependency for it in case you are using py2exe.