How to install opencv that was built with CMAKE build option to venv?

2 min read 05-10-2024
How to install opencv that was built with CMAKE build option to venv?


Installing OpenCV Built with CMake in a Python Virtual Environment

OpenCV is a powerful computer vision library, but its installation can be tricky, especially when you've built it yourself using CMake. This article will guide you through installing OpenCV, built with CMake, into a Python virtual environment.

The Problem:

You've painstakingly compiled OpenCV using CMake and now want to use it within your Python projects. However, simply installing the compiled library into a Python environment isn't straightforward.

Scenario:

Imagine you've successfully built OpenCV from source using CMake on your system. You've got a shiny new OpenCV build directory, and you're itching to use it in your Python projects.

Original Code (CMakeLists.txt):

Let's assume your CMakeLists.txt file looks something like this:

cmake_minimum_required(VERSION 3.10)
project(opencv_project)

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIB_DIR})

add_executable(my_program main.cpp)
target_link_libraries(my_program ${OpenCV_LIBS})

Solution:

The key is to understand that OpenCV, built with CMake, produces libraries and headers. To use these in Python, you need to install the Python bindings for OpenCV, opencv-python, and point it to your custom build.

Steps:

  1. Create a Virtual Environment:

    python3 -m venv my_env
    source my_env/bin/activate
    
  2. Install OpenCV Python Bindings:

    pip install opencv-python 
    
  3. Configure Environment Variables:

    • Set the PYTHONPATH environment variable to include the directory containing the OpenCV Python bindings.
      export PYTHONPATH=$PYTHONPATH:/path/to/opencv/python
      
    • Set the OpenCV_DIR environment variable to the path to your OpenCV build directory.
      export OpenCV_DIR=/path/to/opencv/build 
      
  4. Test Your Installation:

    import cv2
    print(cv2.__version__)
    

Example:

Let's say you built OpenCV in the directory /home/user/opencv/build.

  1. Activate your virtual environment:
    source my_env/bin/activate 
    
  2. Set the environment variables:
    export PYTHONPATH=$PYTHONPATH:/home/user/opencv/build/lib/python3.X/site-packages
    export OpenCV_DIR=/home/user/opencv/build
    
  3. Run a simple Python script to test:
    import cv2
    print(cv2.__version__)
    

Key Points:

  • The PYTHONPATH variable tells Python where to find the OpenCV Python bindings.
  • The OpenCV_DIR variable allows opencv-python to locate the OpenCV libraries and headers you built with CMake.

Additional Tips:

  • It's recommended to use virtual environments for each project to avoid dependency conflicts.
  • Be sure to adjust the paths in the environment variables based on your specific build location.
  • If you face issues, double-check the paths and ensure that the OpenCV Python bindings are installed correctly.

Resources:

By following these steps, you can seamlessly integrate your custom-built OpenCV with your Python projects. Happy coding!