Closely related to using Python 3 is using a more recent version of OpenCV. This may perform better but, at the time of writing, it is quite long-winded to install for Python 2.7. It installs easily in Python 3 by using a PiWheel (prebuilt packages for Python on the Raspberry Pi).
I'll assume that pip3 is the Python 3 pip installer:
$ sudo pip3 install picamera[array] numpy opencv-python
Following this, only one OpenCV function appears to have changed enough to require our code to change.