1

I am using Jetpack 4.3 (an OS image for Nvidia Jetson cards) with a Jetson Nano. In which OpenCV 4.1.1 is pre-installed.
I want to work on multiple virtual environments, But I don't want to install (from source) OpenCV in every virtual environment I create..
So since OpenCV is pre-installed out of the virtual environments, is it possible to make use of it in every virtual environment I create?
If so, how can I link the OpenCV installation to the virtual environments?

Additional info:

dpkg -L libopencv

returns:

/usr
/usr/lib
/usr/lib/aarch64-linux-gnu
/usr/lib/aarch64-linux-gnu/libopencv_calib3d.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_core.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_dnn.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_features2d.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_flann.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_gapi.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_highgui.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_imgproc.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_ml.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_objdetect.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_photo.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_stitching.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_video.so.4.1.1
/usr/lib/aarch64-linux-gnu/libopencv_videoio.so.4.1.1
/usr/share
/usr/share/opencv4
/usr/share/opencv4/haarcascades
/usr/share/opencv4/haarcascades/haarcascade_eye.xml
/usr/share/opencv4/haarcascades/haarcascade_eye_tree_eyeglasses.xml
/usr/share/opencv4/haarcascades/haarcascade_frontalcatface.xml
/usr/share/opencv4/haarcascades/haarcascade_frontalcatface_extended.xml
/usr/share/opencv4/haarcascades/haarcascade_frontalface_alt.xml
/usr/share/opencv4/haarcascades/haarcascade_frontalface_alt2.xml
/usr/share/opencv4/haarcascades/haarcascade_frontalface_alt_tree.xml
/usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml
/usr/share/opencv4/haarcascades/haarcascade_fullbody.xml
/usr/share/opencv4/haarcascades/haarcascade_lefteye_2splits.xml
/usr/share/opencv4/haarcascades/haarcascade_licence_plate_rus_16stages.xml
/usr/share/opencv4/haarcascades/haarcascade_lowerbody.xml
/usr/share/opencv4/haarcascades/haarcascade_profileface.xml
/usr/share/opencv4/haarcascades/haarcascade_righteye_2splits.xml
/usr/share/opencv4/haarcascades/haarcascade_russian_plate_number.xml
/usr/share/opencv4/haarcascades/haarcascade_smile.xml
/usr/share/opencv4/haarcascades/haarcascade_upperbody.xml
/usr/share/opencv4/lbpcascades
/usr/share/opencv4/lbpcascades/lbpcascade_frontalcatface.xml
/usr/share/opencv4/lbpcascades/lbpcascade_frontalface.xml
/usr/share/opencv4/lbpcascades/lbpcascade_frontalface_improved.xml
/usr/share/opencv4/lbpcascades/lbpcascade_profileface.xml
/usr/share/opencv4/lbpcascades/lbpcascade_silverware.xml
/usr/lib/aarch64-linux-gnu/libopencv_calib3d.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_core.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_dnn.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_features2d.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_flann.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_gapi.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_highgui.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_imgproc.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_ml.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_objdetect.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_photo.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_stitching.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_video.so.4.1
/usr/lib/aarch64-linux-gnu/libopencv_videoio.so.4.1
singrium
  • 2,746
  • 5
  • 32
  • 45
  • 1
    Just symlink the main `cv2.so` into all your virtual environments' `site-packages/` folder. – alkasm Mar 13 '20 at 22:38
  • @alkasm, the problem is that I could not locate the main `cv2.so`.. – singrium Mar 13 '20 at 23:01
  • 3
    When you build OpenCV, you need to point it to the correct Python environment for it, and sometimes it still goes in weird places. Adrian Rosebrock's popular blog has a pretty good walkthrough of installation on Linux, just read through and find all the parts relevant to virtual envs and the .so linkage: https://www.pyimagesearch.com/2018/05/28/ubuntu-18-04-how-to-install-opencv/ – alkasm Mar 14 '20 at 00:05

1 Answers1

1

The correct way to do this is to create the virtual environment with the flag to include system wide packages: python3 -m venv --system-wide-packages .venv

The following answer explains the process in detail, including how to handle pip install: https://stackoverflow.com/a/19459977/804840

thrau
  • 2,915
  • 3
  • 25
  • 32