AGX编译安装opencv和opencv-contrib模块(c++和python,支持GPU)

2 篇文章 0 订阅
1 篇文章 0 订阅

在AGX编译安装opencv-python及opencv-contrib-python有两个途径

一、pip安装(以4.4.0.46版本为例)

sudo pip3 install opencv-python==4.4.0.46
sudo pip3 install opencv-contrib-python==4.4.0.46

pip安装只适合python接口调用,若用c++接口,则需要源码编译安装。

二、源码编译安装

源码编译安装在终端输入cmake预编译指令,编译出来即可满足c++,python接口调用,也可支持GPU。
云盘链接: https://pan.baidu.com/s/1U4LqcfDoH0RS33MPi4fM6w 密码: rqn2
opencv的扩展模块及编译需要下载的各种*.i文件都在opencv-4.4.0.zip里了

  • mkdir build;cd build
  • cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4 -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules -D WITH_CUDA=1 -D WITH_CUDNN=1 -D OPENCV_DNN_CUDA=1 -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D ENABLE_FAST_MATH=1 -D WITH_CUBLAS=1 -D HAVE_opencv_python3=1 -DBUILD_opencv_python3=ON -D OPENCV_GENERATE_PKGCONFIG=1 -D CUDA_ARCH_BIN=7.2 -D PYTHON_DEFAULT_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)") -D PYTHON3_EXECUTABLE=$(python3 -c "import sys; print(sys.executable)") -D PYTHON3_NUMPY_INCLUDE_DIRS=$(python3 -c "import numpy; print (numpy.get_include())") -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..
    注意:
    0、CMAKE_INSTALL_PREFIX:待安装位置
    1、OPENCV_EXTRA_MODULES_PATH :拓展模块代码位置;
    2、CUDA_ARCH_BIN :设备的cuda参数 AGX=7.2; TX2=6.2;
    参考https://blog.csdn.net/CSS360/article/details/109696878
    3、PYTHON_DEFAULT_EXECUTABLE: 默认的解释器
    PYTHON3_EXECUTABLE: python3解释器
    PYTHON3_NUMPY_INCLUDE_DIRS: python3的numpy头文件
    PYTHON3_PACKAGES_PATH:python3版opencv动态库安装地址
    有些博客还加了PYTHON_LIBRAR,这里没加也可以编译成功;
  • make -j8
  • sudo make install

安装完成之后,打印编译信息,可以看到opencv编译版本是python3,python3的解释器、动态库等相关的信息也可看到。

import cv2
print(cv2.getBuildInformation())

在这里插入图片描述

三、示例:opencv-LSD算法python接口调用

按:LSD算法在opencv4中被移除到opencv-contrib模块

import cv2 as cv
import numpy as np
Img = cv.imread('lsd_img.png', 1)
gray_Img = cv.cvtColor(Img, cv.COLOR_BGR2GRAY)
lsd = cv.ximgproc.createFastLineDetector()
lsd_lines = lsd.detect(gray_Img)
result_img = lsd.drawSegments(gray_Img, lsd_lines)
for lsd_line in lsd_lines:
    x0 = int(round(lsd_line[0][0]))
    y0 = int(round(lsd_line[0][1]))
    x1 = int(round(lsd_line[0][2]))
    y1 = int(round(lsd_line[0][3]))
    cv.line(Img, (x0, y0), (x1, y1), (0, 0, 255), 1)
cv.imshow("draw_Img", Img)
cv.waitKey(0)

出图效果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值