ubuntu16.04 从源码安装opencv4.0 支持anaconda3.5

2023-11-08

step1:安装依赖库

sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran

step2:下载源码

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

step3配置编译:

3.1准备:

(1)andaconda安装:

参考:https://blog.csdn.net/luteresa/article/details/79819476

我的安装目录:/home/leon/x86_install/anaconda3

系统已经有python2.7,python3.5,python3.6(anaconda打包安装的),我的目标是用opencv支持python3.6,这样以后用anaconda开发方便调用cv库,安装opencv所需的numpy也可以直接用anaconda里的,不用额外再安装;
(2)修改默认python3链接
删除/usr/bin/python

sudo rm /usr/bin/python

sudo ln -s /home/leon/anaconda3/bin/python  /usr/bin/python3

ps:假如默认访问顺序anaconda里的python3优先的话,也可以不改,总之默认python3访问anaconda里的python3.6就可以。

3.2配置编译选项:

OPENCV配置项非常多,最新的版本(前几天编的是opencv3.4, 写文章时pull升级到4.0了)都支持cmake,建议用cmake-gui配置,简单方便实用;

sudo apt install cmake-qt-gui

cmake-gui

配置源码路径和目标生成路径:比如


点configure,弹出对话框默认即可->Unix Makefiles->Use default native comilers

X86平台可以用默认,直接点Finish.其他平台选最后一项Specify options for cross-compiling,指定相应编译器,交叉编译后面再专门讨论;


常见的需要配置项:

1)在Search栏上输入OPENCV_EXTRA_MODULES_PATH,配置刚下载的modules路径,比如:/home/leon/src_caffe/opencv_contrib/modules;
2)输入CMAKE_INSTALL_PREFIX,配置成opencv安装目录,如/home/leon/caffe_install/
3)输入BUILD_TYPE,配置为RELEASE;
4)输入WITH_CUDA,去掉,不编译CUDA部分代码;
5)输入BUILD_DOCS,去掉,表示不生成帮助文档;
6)输入WITH_CUFFT,去掉,表示不用cuda的fft;
7)输入CL,分别将WITH_OPENCL, WITH_OPENCLAMDBLAS, WITH_OPENCLAMDFFT, OPENCL_FOUND的勾去掉,不采用OpenCL的GPU加速;
8)输入matlab,相关的去掉;
9)输入WITH_IPP,去掉;
10)输入TIFF,还有其他的jpeg,png之类都选上;
11)添加选项ENABLE_CXX11,支持C++11;

12)配置python,如图:

添加BUILD_opencv_python3选项


点击Configure,进度条完成后,再点击Generate,即会在build下产生Makefile编译文件。


看到Configuring done , 说明配置成功;

make

make install

编译过程中如果遇到其他问题,按提示配置;

把python版本动态库拷到anaconda目录:
cp  lib/python3/cv2.cpython-36m-x86_64-linux-gnu.so   /home/leon/x86_install/anaconda3/lib/python3.6/


安装好后,如果修改了/usr/bin/python3链接,改回去,不然gnome-terminal起不来:
sudo rm /usr/bin/python3
sudo ln -s /usr/bin/python3.5 /python3

4.测试

4.1python版本测试:

查看版本:

python -c "import cv2; print (cv2.__version__)"

显示lens图片:

代码:

import cv2
srcImage=cv2.imread('./samples/data/lena.jpg')
cv2.imshow('lena', srcImage)
cv2.waitKey(0)

sudo apt-get install --reinstall python-gi   

export GIO_EXTRA_MODULES=/usr/lib/x86_64-linux-gnu/gio/modules/

警告消失:


4.2测试C++接口:

代码:
#include <opencv2/opencv.hpp>
#include <opencv2/core/types_c.h>

using namespace cv;
int main(int argc, char**argv)
{
    if(argc!=2){
            printf("usage:displayImage <Image_path>\n");
            return -1;
        }
    Mat image;
    image = imread(argv[1],1);
    if(!image.data)
    {
        printf("No iamge data.\n");
        return -1;
    }
    std::cout<<"read ok.\n";
    cv::namedWindow("Display Image",WINDOW_AUTOSIZE);
    std::cout<<"get namedWindow.\n";
    rectangle(image,cvPoint(190,74),cvPoint(340,269),Scalar(255,0,0),1,1,0);
    imshow("Display Image",image);
    std::cout<<"show Image\n";

    waitKey(0);

    return 0;
}

编译:

g++ DisplayImage.cpp  -L/home/leon/caffe_install/lib -std=c++11   -o DisplayImage -lopencv_core  -lopencv_imgcodecs -lopencv_highgui  -lopencv_imgproc


5.配置opencv环境

sudo /bin/bash -c 'echo "/home/leon/caffe_install/lib" > /etc/ld.so.conf.d/opencv.conf'
$ sudo ldconfig



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu16.04 从源码安装opencv4.0 支持anaconda3.5 的相关文章

  • 如何将 SLURM-jobID 作为输入参数传递给 python?

    我是使用 SLURM 训练一批卷积神经网络的新手 为了轻松跟踪所有经过训练的 CNN 我想将 SLURM jobID 作为输入参数传递给 python 将其他变量作为参数传递可以正常工作 但是 我无法访问 SLURM jobid 来通过 我
  • Caffe 中的欧几里得损失层

    我目前正在尝试在 caffe 中实现我自己的损失层 在尝试这样做的同时 我使用其他层作为参考 然而 让我困惑的一件事是使用top 0 gt cpu diff in Backward cpu 我将使用EuclideanLossLayer作为参
  • 多个异步调用阻塞

    My code import asyncio async def test i await asyncio sleep i print test async def main await test 2 await test 2 await
  • Caffe的train.prototxt中平均值的顺序是什么?

    在我的咖啡馆里 train prototxt 我正在做一些输入数据转换 如下所示 transform param mirror true crop size 321 mean value 104 Red mean value 116 Blu
  • Spark 2.3 AsyncEventQueue 错误和警告

    我正在运行内存密集型代码 其中创建了一个管道 其中包括 使用 Shimazaki 和 Shinomoto 的 Bin Width 算法找到最佳的 bin 值数量 通过使用上面找到的相应 bin 值对同一列进行分桶来创建新列 通过 8 个顺序
  • Kivy 应用程序无法在 Android 上运行

    我想使用 kivy 在 Android 上用 Python 编写简单的应用程序 遗憾的是 当我启动示例代码时 我只看到启动屏幕 几秒钟后应用程序完成工作 调试存在一个巨大的问题 因为 Linux Mint 上的 adb 无法检测到我的设备
  • 基于 F1 的自定义评估函数,用于 xgboost - Python API

    我编写了以下自定义评估函数与 xgboost 一起使用 以优化 F1 不幸的是 当使用 xgboost 运行时它会返回异常 评价函数如下 def F1 eval preds labels t np arange 0 1 0 005 f np
  • 多处理管道 send() 块

    根据Python文档 只有recv 阻止但不阻止send 我编写了以下代码尝试制作 GUI 数独游戏 我这样做的方式是即使我可以更新游戏板tkinter正在执行其mainloop 然而 在测试运行过程中 我发现如果我在游戏更新时关闭窗口 p
  • 由于 gcc 编译器版本不受支持,Caffe 编译失败

    我挣扎着Caffe http caffe berkeleyvision org 汇编 不幸的是我没能编译它 Steps http caffe berkeleyvision org installation html cmake compil
  • 未定义符号:_ZdlPvm

    我在用阿波罗咖啡 https github com Russell91 apollocaffe and 重新检查 https github com Russell91 ReInspect Apollocaffe在 c 库中并且Reinspe
  • caffe: **group** 参数是什么意思?

    我已阅读有关的文档group param group g 默认 1 如果 g gt 1 我们将每个过滤器的连接限制为输入的子集 具体地 将输入和输出通道分为g组 第i个输出组通道将仅与第i个输入组通道连接 但首先我不明白它们的确切含义 其次
  • 如何在 pycaffe 中获取图层类型?

    是否有可能在 pycaffe 中获取每一层的类型 例如 卷积 数据等 我搜索了提供的示例 但找不到任何内容 目前我正在使用图层名称来完成我的工作 这是非常糟糕和有限的 这很容易 import caffe net caffe Net path
  • 在Ubuntu 18.04、Python 3.6.7 64位、Mono 5.16上安装pythonnet失败

    我想在 Ubuntu 上安装 pythonnet 但失败了 这就是我到目前为止所尝试的 usr bin python3 m pip install U pythonnet user Error Collection pythonnet Us
  • 如何在Python 3.6中安装pymssql模块?

    我已经阅读了一些涉及 FreeTDS Wheel git 和 github 的文档 但在我的带有 Python 3 6 的 Windows 10 PC 上没有任何功能 但我需要安装它 我正在开发一个项目 我对已经安装在我的电脑中的 mssq
  • 查找带有 Anaconda cmake 前缀的 boost-python3

    DLDR如何将 cmake 指向 boost python3 库 cmake 不会自动检测到它 我正在尝试建立caffe https github com BVLC caffe对于 Python 3 6 使用提供的 cmake 我的系统规格
  • 无法在 MacOS Big Sur 上安装/运行 Python 3.6.x 和 3.7.x [已关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我将 mac 操作系统升级到最新的 MacOS Big Sur 更新后我以前使用 python 3 6 x 3 7 x
  • 使用pytube下载youtube视频时如何添加tqdm以显示进度条?

    我在学习pytube下载 Youtube 视频并尝试tqdm在它的顶部显示进度条 但它显示各种错误 而且我无法理解当我下载视频时发生了什么pytube并显示进度条 这就是我无法添加的原因tqdm in it 我写的代码pytube运行良好
  • 如何使用python检查youtube中的视频是否已被删除或删除

    我有一个 csv 文件 其中有 1000 个视频链接 我想检查这些视频是否仍然存在或者已从 YouTube 中删除或删除 我怎样才能在Python中做到这一点 请指导一下这个 你可以使用官方 YouTube API https develo
  • PyQt MainWindow 在 Windows 上使用多处理

    我尝试创建一个PyQt应用 为了在后台运行进程并保持PyQt5应用程序可用于新指令 我想使用multiprocessing 在 Windows 操作系统上 当我从 Qt 调用函数时MainWindow与 一起上课multiprocessin
  • 在 .vscode 中调试时遇到问题

    我最近在 VSCODE 中调试时遇到了一个大问题 我尝试通过搜索网站并重新安装一些扩展来自行修复它 而不是在中显示我的结果调试控制台它将以下输出写入我的terminal cd Users AVFL Documents Programming

随机推荐

  • 基于深度强化学习的柔性作业车间动态调度

    文献来源 International Journal of Production Research 2022 南洋理工大学 IJPR 2022 Full article Deep reinforcement learning for dyn
  • JPS命令的安装和使用

    一 简介 jps Java Virtual Machine Process Status Tool 是JDK 1 5提供的一个显示当前所有java进程pid的命令 简单实用 非常适合在linux unix平台上简单察看当前java进程的一些
  • android NDK编译openblas和向量检索库faiss

    设置android SDK和NDK路径 例如 export SDK ROOT root codes my sdk sdk export NDK ROOT root codes my sdk sdk ndk 24 0 8215888 sdk和
  • 自制带串口的J-Link OB 072

    自制带串口的J Link OB 072 普通的三线J link不带串口 使用起来比较麻烦 于是找资料自制了一个J Link OB 072 主芯片是stm32f072c8t6 带串口 使用方便 先上图 自带信仰加持 一遍调通 急急如律令 依然
  • vue 高德地图添加放大缩小地图、转盘工具

    新建文件 amap vue
  • Guided Diffusion/Diffusion Models Beat GANs on Image Synthesis (Paper reading)

    Guided Diffusion Diffusion Models Beat GANs on Image Synthesis Paper reading Prafulla Dhariwal OpenAI NeurlPS2021 Cited
  • JavaScript——大数组的合并问题及不同数组合并方法的探究

    JavaScript 大数组的合并问题及不同数组合并方法的探究 最近在处理模型数据的时候出现了一个问题 当合并不同模型的vertex等数据的时候 从网上查了查都说Array prototype push 这个好 结果我使用了这个方法却报错了
  • VUE的项目中怎样修改浏览器窗口的 LOGO

    vue项目如何修改上图浏览器的标题栏的图标 在public目录中的index html添加如下代码 注意logo svg是图片 图片位置在public目录下
  • 【直接收藏】前端 VUE 高阶面试题(一)

    1 说说vue动态权限绑定渲染列表 权限列表渲染 首先请求服务器 获取当前用户的权限数据 比如请求 this http get rights list 获取到权限数据之后 在列表中使用v if v if else的组合来展示不同的内容
  • 性能测试常见问题分析

    性能测试常见问题分析 1 请你个人描述一下性能测试的意义和作用 说出因性能不良造成的质量事故 2 如何进行性能测试 请说出整体的性能测试流程 a 分析测试范围 测试对象 如频繁使用的功能 频繁调用的接口 大量数据库读写操作多的功能 大量读写
  • 信息组织川大972

    网络信息组织 1 网络信息环境 1 1 网络发展的三个阶段 2 语义网信息组织 2 1 万维网与语义网 2 2 语义网技术架构 2 3 本体 2 4 关联数据 2 5 网站信息架构 3 Web2 0信息组织方法 3 1 标签法 3 2 Wi
  • 多元Huffman编码问题

    题目链接 题意 最多可以让k堆合并 每一次合并的花费为河合并堆的数量 问最多和最少的花费 题解 最少的花费一定是每次合并的堆数尽可能多 这样我们就会减少前面已经合并的堆的重复计算 所以 每次合并k堆时最少 每次合并2堆时最大 另外 最少的时
  • [WTL] STLport安装指南

    STLport安装指南STLport 4 6 是完全兼容ANSI C 标准的类库 This distribution contains STLport sources only no binaries To use STLport iost
  • Word文件删除后怎么恢复?好用的恢复方法分享

    Word文件删除后怎么恢复 在工作和学习的过程中 我们难免会遇到丢失数据的情况 比如有时候不小心删除了Word文件 或者Word文件在操作过程中意外卡顿导致丢失 有什么好方法恢复呢 下面就一起来了解下 遇到Word文件数据丢失不要慌张 首先
  • Java项目的开发流程

    一个java开发项目过程 1 项目启动 1 项目组成立 公司成员 客户成员 2 制定项目预期目标 3 制定项目计划周期 4 建立好项目组成员沟通机制 2 需求调研 1 创建调研计划 协调调研时间 2 收集客户资料 获取客户需求 所有的资料都
  • Redis缓存雪崩、穿透、击穿原因分析和解决方案,附Redis管道使用技巧

    先给大家附上其他几篇文章 感兴趣的自行开车导航 Redis过期策略和持久化机制全面揭秘 教你如何合理配置 深入浅出Redis 一 从版本特性到数据类型到线程模型 带你了解Redis的核心特性和应用场景 一次redis OOM问题分析解决 r
  • 阿里云ECS漏洞修复简单办法

    阿里云的安全检测功能会每天检测主机上的漏洞 然后短信推送 让你试用漏洞修复功能 或购买修复功能 其实不需要购买 在主机上执行 apt upgrade 或者 yum upgrade 就自动修复了 其实就是更新软件包 更新内核 然后重启就可以了
  • LeetCode-738

    738 单调递增的数字 给定一个非负整数 N 找出小于或等于 N 的最大的整数 同时这个整数需要满足其各个位数上的数字是单调递增 当且仅当每个相邻位数上的数字 x 和 y 满足 x lt y 时 我们称这个整数是单调递增的 Example
  • 油盐微服务——负载均衡Ribbon

    文章目录 客户端负载均衡 RestTemplate详解 Spring Cloud Ribbon 是一个基于http和tcp的客户端 负载均衡工具 它 不需要像服务注册中心那样 独立部署 它几乎存在于每一个Spring Cloud构建的微服务
  • ubuntu16.04 从源码安装opencv4.0 支持anaconda3.5

    step1 安装依赖库 sudo apt get install build essential cmake pkg config sudo apt get install libjpeg8 dev libtiff5 dev libjasp