【GO-OpenCV】go-cv快速配置

news2024/10/6 4:08:12

最近对golang实现目标检测心血来潮,尝试在没有sudo权限的平台配置go-cv,有所发现,索性多个平台都做尝试

安装Go语言(Golang)

通过包管理器安装(适用于Debian/Ubuntu)(有点慢)

  1. 更新包列表:

    sudo apt update
    
  2. 安装Go语言:

    sudo apt install golang-go
    
  3. 下载Go语言的二进制文件:

    • 访问Go语言的下载页面。
    • 选择适合你系统的版本(例如,Linux AMD64),然后下载。

    或者使用wget命令直接下载,例如:

    wget https://golang.google.cn/dl/go1.21.1.linux-amd64.tar.gz
    
  4. 解压下载的文件:

    tar -C /usr/local -xzf go1.21.1.linux-amd64.tar.gz
    
  5. 设置环境变量:

    • 打开或创建~/.profile文件,并添加以下内容:

      export PATH=$PATH:/usr/local/go/bin
      
    • 使环境变量生效:

      source ~/.profile
      

验证安装

无论你使用哪种方法安装Go语言,都可以通过以下命令验证安装是否成功:

go version

如果安装成功,你将看到类似如下的输出:

go version go1.17.6 linux/amd64

这样,你就成功在Linux系统上安装了Go语言。

安装conda

探索Miniconda3:简单、灵活的Python环境和软件包管理利器
Miniconda3是一个轻量级的Anaconda发行版,可以在Miniconda官方网站上下载适合你操作系统的安装包。选择对应的版本(例如,Windows、MacOS或Linux)并下载安装包。

在下载完成后,运行安装脚本并按照提示进行安装。你可以选择默认安装路径,也可以自定义安装路径。

在这里插入图片描述

常用依赖项

sudo apt-get update
sudo apt-get install -y build-essential cmake git pkg-config libgtk-3-dev \
    libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
    libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \
    gfortran openexr libatlas-base-dev python3-dev python3-numpy \
    libtbb2 libtbb-dev libdc1394-22-dev

测试代码

我们以加载YOLOV3模型开始

  • 设置 GOPROXY:尝试设置 GOPROXY 环境变量,使用其他模块代理或直接指向源仓库:
    export GOPROXY=https://goproxy.io,direct
    
mkdir golov3
cd golov3
go mod init golov3 
touch load.go
export GOPROXY=https://goproxy.io,direct

package main

import (
	"fmt"
	"gocv.io/x/gocv"
)

func main() {
	net := gocv.ReadNet("yolov3.weights", "yolov3.cfg")
	if net.Empty() {
		fmt.Println("无法加载模型文件")
		return
	}

	layerNames := net.GetLayerNames()
	for _, name := range layerNames {
		fmt.Println(name)
	}
}

go get gocv.io/x/gocv
在这里插入代码片

换版本

module golov3

go 1.21.4

require gocv.io/x/gocv v0.31.0 // indirect

go mod tidy
go run load.go

没有权限

飞桨AI

**飞桨自带golang和conda环境 **

pkg-config

aistudio@jupyter-7169344-8038676:~/golov3$ go run load.go
go build gocv.io/x/gocv:
pkg-config --cflags – opencv4 pkg-config: exec: “pkg-config”: executable file not found in $PATH

conda
conda create myenv

conda install -c conda-forge pkg-config -y

EnvironmentNotWritableError: The current user does not have write permissions to the target environment.environment location: /opt/conda
uid: 1000
gid: 1000

conda init
conda create -n myenv
conda activate myenv
conda install -c conda-forge pkg-config -y

装OpenCV

go build gocv.io/x/gocv:
pkg-config --cflags – opencv4 Package opencv4 was not found in the pkg-config search path. Perhaps you should add the directory
containing `opencv4.pc’ to the PKG_CONFIG_PATH environment variable No
package ‘opencv4’ found pkg-config: exit status 1

conda install -c conda-forge opencv=4.6.0

设置 LD_LIBRARY_PATH 环境变量

缺什么补什么

/tmp/go-build3099974566/b001/exe/load: error while loading shared
libraries: libopencv_highgui.so.406: cannot open shared object file:
No such file or directory exit status 127

find / -name "libopencv_highgui.so.406" 2>/dev/null

(myenv) aistudiojupyter-7169344-7984906:~/godcv$ find / -name
“libopencv_highgui.so.406” 2>/dev/null
/home/aistudio/.conda/pkgs/opencv-4.6.0-py310ha16400d_5/lib/libopencv_highgui.so.406
/home/aistudio/.conda/envs/myenv/lib/libopencv_highgui.so.406

我们找到了 libopencv_highgui.so.406 的位置

/home/aistudio/.conda/pkgs/opencv-4.6.0-py310ha16400d_5/lib/libopencv_highgui.so.406                                                                                                           
/home/aistudio/.conda/envs/myenv/lib/libopencv_highgui.so.406 

以下是具体步骤:

  1. 设置 LD_LIBRARY_PATH 环境变量

    将 Conda 环境中的库路径添加到 LD_LIBRARY_PATH

    export LD_LIBRARY_PATH=/home/aistudio/.conda/envs/myenv/lib:$LD_LIBRARY_PATH
    

    你可以将这条命令添加到你的 shell 配置文件(如 .bashrc.zshrc)中,以便每次启动 shell 时自动设置:

    echo 'export LD_LIBRARY_PATH=/home/aistudio/.conda/envs/myenv/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
    source ~/.bashrc
    
  2. 验证环境变量

    确认 LD_LIBRARY_PATH 已正确设置:

    echo $LD_LIBRARY_PATH
    

    你应该看到 /home/aistudio/.conda/envs/myenv/lib 在输出中。

  3. 重新编译并运行 Go 程序

    确保所有环境变量和库路径都正确设置后,重新编译并运行你的 Go 程序:

    go run load.go
    

在这里插入图片描述

有权限

本地Linux虚拟机

Ubuntu扩容

我使用虚拟机一度安装失败,发现原因是磁盘内存不足,OpenCV没安装完整

sudo apt-get install gparted
sudo gparted

pkg-config

aistudio@jupyter-7169344-8038676:~/golov3$ go run load.go
go build gocv.io/x/gocv:
pkg-config --cflags – opencv4 pkg-config: exec: “pkg-config”: executable file not found in $PATH

有权限(似乎不好用)
sudo apt-get install -y pkg-config
没权限
conda install -c conda-forge pkg-config -y

EnvironmentNotWritableError: The current user does not have write permissions to the target environment.environment location: /opt/conda
uid: 1000
gid: 1000

conda init
conda create -n myenv
conda activate myenv
conda install pkg-config
conda install -c conda-forge pkg-config -y

装OpenCV

go build gocv.io/x/gocv:
pkg-config --cflags – opencv4 Package opencv4 was not found in the pkg-config search path. Perhaps you should add the directory
containing `opencv4.pc’ to the PKG_CONFIG_PATH environment variable No
package ‘opencv4’ found pkg-config: exit status 1

有权限(似乎不好用)
sudo apt-get update
sudo apt-get install libopencv-dev
没权限
conda install -c conda-forge opencv=4.6.0

设置 LD_LIBRARY_PATH 环境变量

缺什么补什么

/tmp/go-build3099974566/b001/exe/load: error while loading shared
libraries: libopencv_highgui.so.406: cannot open shared object file:
No such file or directory exit status 127

find / -name "libopencv_highgui.so.406" 2>/dev/null

在这里插入图片描述

我们找到了 libopencv_highgui.so.406 的位置

/home/qqq/miniconda3/lib/libopencv_highgui.so.406


/home/qqq/miniconda3/pkgs/libopencv-4.6.0-py310h5bd1119_9/lib/libopencv_highgui.so.406

以下是具体步骤:

  1. 设置 LD_LIBRARY_PATH 环境变量

    将 Conda 环境中的库路径添加到 LD_LIBRARY_PATH

    export LD_LIBRARY_PATH=/home/qqq/miniconda3/lib:$LD_LIBRARY_PATH
    

    你可以将这条命令添加到你的 shell 配置文件(如 .bashrc.zshrc)中,以便每次启动 shell 时自动设置:

    echo 'export LD_LIBRARY_PATH=/home/qqq/miniconda3/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
    source ~/.bashrc
    
  2. 验证环境变量

    确认 LD_LIBRARY_PATH 已正确设置:

    echo $LD_LIBRARY_PATH
    

    你应该看到 /home/aistudio/.conda/envs/myenv/lib 在输出中。

  3. 重新编译并运行 Go 程序

    确保所有环境变量和库路径都正确设置后,重新编译并运行你的 Go 程序:

    go run load.go
    

在这里插入图片描述

WINDOWS(待续,暂未成功)

安装Go

  1. 打开命令提示符(可以通过按 Win + R,然后输入 cmd 并按回车来打开)。

  2. 使用 curl 命令下载Go 1.21.11的安装包。如果你没有安装 curl ,你可以先安装它们。

    使用 curl

    curl -O https://dl.google.com/go/go1.21.11.windows-amd64.msi
    
  3. 打开一个新的命令行窗口(非常重要,因为环境变量的更改需要新的命令行窗口才能生效)。

  4. 输入以下命令来验证Go是否安装成功:

    go version
    

在Windows命令行中设置 GOPROXY 环境变量

以下是一个完整的示例,展示如何在Windows命令行中设置 GOPROXY 环境变量:

  1. 打开命令提示符。

  2. 设置 GOPROXY 环境变量(临时):

    set GOPROXY=https://goproxy.io,direct
    
  3. 或者设置 GOPROXY 环境变量(永久):

    setx GOPROXY https://goproxy.io,direct
    
  4. 验证环境变量设置:

    echo %GOPROXY%
    

通过这些步骤,你应该能够在Windows命令行中成功设置 GOPROXY 环境变量。如果你有任何其他问题,请告诉我。

curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe

setx PATH "%PATH%;C:\Users\admin\miniconda3;C:\Users\admin\miniconda3\Scripts"

如果你看到 'conda' 不是内部或外部命令,也不是可运行的程序或批处理文件 的错误消息,这通常意味着Conda没有正确安装,或者Conda的路径没有添加到系统的环境变量中。

步骤1:安装Conda

如果你还没有安装Conda,可以从以下链接下载并安装:

  • Anaconda:包含了大量科学计算包,适合需要完整科学计算环境的用户。
  • Miniconda:一个轻量级的Conda安装包,只包含Conda和Python,适合需要最小化安装的用户。

步骤2:添加Conda到系统路径

如果你已经安装了Conda,但仍然看到错误消息,你需要确保Conda的路径已添加到系统的环境变量中。

方法1:手动添加Conda路径
  1. 找到Conda的安装路径
    通常,Conda会安装在你的用户目录下,例如 C:\Users\YourUsername\Anaconda3C:\Users\YourUsername\Miniconda3

  2. 添加路径到系统环境变量

    • 右键点击“此电脑”或“计算机”,选择“属性”。
    • 点击“高级系统设置”。
    • 点击“环境变量”。
    • 在“系统变量”部分,找到名为 Path 的变量,选中并点击“编辑”。
    • 点击“新建”,然后添加Conda的安装路径,例如 C:\Users\YourUsername\Anaconda3C:\Users\YourUsername\Anaconda3\Scripts
    • 点击“确定”保存更改。
  3. 重新启动命令提示符
    关闭并重新打开命令提示符,以使更改生效。

方法2:使用Conda自带的脚本

如果你使用的是Anaconda Prompt或Miniconda Prompt,这些提示符会自动配置环境变量,你可以直接使用它们。

验证Conda安装

打开命令提示符或Anaconda Prompt,运行以下命令来验证Conda是否正确安装:

conda --version

如果安装成功,你会看到Conda的版本信息。

  1. 创建新的Conda环境

    conda create -n gocv-env 
    
  2. 激活Conda环境

    conda activate gocv-env
    
  3. 安装OpenCV

    conda install -c conda-forge opencv
    
  4. 获取GoCV

    go get -u -d gocv.io/x/gocv
    
  5. 设置环境变量

    set OPENCV_DIR=%CONDA_PREFIX%
    set CGO_CPPFLAGS=-I%CONDA_PREFIX%\Library\include
    set CGO_LDFLAGS=-L%CONDA_PREFIX%\Library\lib
    
  6. 验证安装

    go run -tags customenv github.com/hybridgroup/gocv/cmd/version/main.go
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1829549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贷款投资决策和常用财务函数

前段时间上了一门excel操作的课,本文结合其中介绍财务函数以及投资决策分析相关的部分,对贷款中的现金流计算进行深入的分析。 以等额本息产品为例进行实操计算,假设某产品本金12000元,期限12,IRR利率24%。每期还款113…

关于volatile与System.out的“冲突”导致的内存屏障失效问题

起因:今天在写一个volatile相关的Demo,本来想的是一个线程根据这个IS_STOP去一直进行循环,直到另一个线程改变为true就中断。内存屏障的问题会导致虽然其他线程修改了值,但是原线程是不知道的,会继续循环,所…

c++模板模式

文章目录 模板模式什么是模板模式为什么使用模板模式模板模式实现步骤 示例模板模式优缺点 模板模式 什么是模板模式 模板模式(Template Method Pattern)是一种行为设计模式,它定义了一个操作中的算法骨架,将某些步骤的具体实现延…

质疑标普,理解标普,加入标普

上周我在文章里提到过,标普信息科技LOF(161128)出现套利机会。每天申购卖出,到现在一个账户56*6336润。 得益于美股七巨头轮流领涨,161128依旧坚挺,每天溢价都是10%,成交量1个多亿,场内新增份额才400万份&…

Web的UI自动化基础知识

目录 1 Web自动化入门基础1.1 自动化知识以及工具1.2 主流web自动化测试工具1.3 入门案例 2 使用工具的API2.1 元素定位2.1.1 id选择器2.1.2 name2.1.3 class_name选择器2.1.4 tag_name选择器2.1.5 link_text选择器2.1.6 partial_link_text选择器2.1.7 xpath选择器2.1.8 CSS选择…

【AI实践】Dify开发应用和对接微信

自定义应用 创建应用有2种, 从应用模板创建 空白应用,也就是自定义应用 选择翻译助手 Translation assistant模板创建一个应用 自定义应用,创建一个child_accompany_bot自定的应用,用来支持家长,如何解决低龄儿童的…

马克·雷伯特访谈:机器人的未来及波士顿动力的创新之路

引言 机器人技术作为现代科技的前沿领域,始终吸引着大量的关注与研究。波士顿动力公司作为这一领域的领军者,其创始人兼前CEO马克雷伯特(Marc Raibert)近日在主持人莱克斯弗里德曼(Lex Fridman)的播客节目…

this指针如何使C++成员指针可调用

在C中,this指针是一个隐藏的指针,指向当前对象实例。它在成员函数中自动可用,用于访问该对象的成员变量和成员函数。理解this指针的工作原理有助于理解为什么指向成员的指针是可调用的。在本文中,我们将详细探讨this指针的概念&am…

计算机组成原理之定点运算器的组成

文章目录 定点运算器的组成逻辑运算ALU两级先行进位的ALU 总线单总线结构双总线结构三总线结构 定点运算器的组成 逻辑运算 总的来说,逻辑非运算就是按位取反;逻辑加运算就是按位取或运算;逻辑乘运算就是按位取和运算;逻辑异运算…

vue框架学习------框架概述

框架 在基础语言之上,对各种基础功能进行封装 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法; 另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而…

分类模型部署-ONNX

分类模型部署-ONNX 0 引入:1 模型部署实战测试:1 安装配置环境:2 Pytorch图像分类模型转ONNX-ImageNet1000类3 推理引擎ONNX Runtime部署-预测单张图像: 2 扩展阅读参考 0 引入: 在软件工程中,部署指把开发…

仅凭一图,即刻定位,AI图像定位技术

AI图像定位技术,解锁空间密码!仅凭一图,即刻定位,精准至经纬度坐标,让世界无处不晓。 试试看能否猜中这张自拍照的背景所在?可别低估了A的眼力,答案说不定会让你大吃一惊呢。 近期,…

计算机组成原理之浮点四则运算

文章目录 浮点加减运算浮点乘法运算浮点除法运算浮点运算器的流水原理习题 浮点加减运算 总的来说,分为四个步骤: (1)0操作数检查 (2)比较阶码大小并完成对阶 (3)尾数进行加或者减操…

异常向量表的设置

1、Linux Kernel中对异常向量表的填充 linux/arch/arm64/kernel/entry.S kernel_ventry 是一个定义异常向量的宏; 在该宏中,程序跳转到了b el\el\ht()\regsize()\label; 以为异常向量的第6行为例,其实就是跳转到了bl el1h_64_irq; 然后你去搜…

算法题解记录28+++对称二叉树(百日筑基)

一、题目描述: 题目难度:简单 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 分割线 示例 2: 输入:root [1,2,2,null,3,nul…

Python基础用法 之 数据类型

Python常见数据类型分类 数字型非数字型整型: 整数--int--16 字符串:使用引号引起来的的就是字符串--Tom 浮点型:小数--float--16.66列表:list [1,2,3] 布尔型:bool(真True,假False&#xff…

手写MyBatis 重要基本原理框架

1. 手写MyBatis 重要基本原理框架 文章目录 1. 手写MyBatis 重要基本原理框架1.1 第一步:IDEA中创建模块1.2 第二步:资源工具类,方便获取指向配置文件的输入流1.3 第三步:定义SqlSessionFactoryBuilder类1.4 第四步:分…

国产MCU芯片(2):东软MCU概览

前言: 国产芯片替代的一个主战场之一就是mcu,可以说很多国内芯片设计公司都打算或者已经在设计甚至有了一款或多款的量产产品了,这也是国际大背景决定的。过去的家电市场、过去的汽车电子市场,的确国产芯片的身影不是很常见,如今不同了,很多fabless投身这个行业,一种是…

开源语音合成模型ChatTTS本地部署结合内网穿透实现远程访问

文章目录 前言1. 下载运行ChatTTS模型2. 安装Cpolar工具3. 实现公网访问4. 配置ChatTTS固定公网地址 前言 本篇文章就教大家如何快速地在Windows中本地部署ChatTTS,并且我们还可以结合Cpolar内网穿透实现公网随时随地访问ChatTTS AI语言模型。 最像人声的AI来了&a…

跟着刘二大人学pytorch(第---12---节课之RNN基础篇)

文章目录 0 前言0.1 课程视频链接:0.2 课件下载地址: 1 Basic RNN1.1 复习DNN和CNN1.2 直观认识RNN1.3 RNN Cell的内部计算方式 2 具体什么是一个RNN?3 使用pytorch构造一个RNN3.1 手动构造一个RNN Cell来实现RNN3.2 直接使用torch中现有的RN…