最近对golang实现目标检测心血来潮,尝试在没有sudo权限的平台配置go-cv,有所发现,索性多个平台都做尝试
安装Go语言(Golang)
通过包管理器安装(适用于Debian/Ubuntu)(有点慢)
-
更新包列表:
bashsudo apt update
-
安装Go语言:
bashsudo apt install golang-go
-
下载Go语言的二进制文件:
- 访问Go语言的下载页面。
- 选择适合你系统的版本(例如,Linux AMD64),然后下载。
或者使用
wget
命令直接下载,例如:bashwget https://golang.google.cn/dl/go1.21.1.linux-amd64.tar.gz
-
解压下载的文件:
bashtar -C /usr/local -xzf go1.21.1.linux-amd64.tar.gz
-
设置环境变量:
-
打开或创建
~/.profile
文件,并添加以下内容:bashexport PATH=$PATH:/usr/local/go/bin
-
使环境变量生效:
bashsource ~/.profile
-
验证安装
无论你使用哪种方法安装Go语言,都可以通过以下命令验证安装是否成功:
bash
go version
如果安装成功,你将看到类似如下的输出:
bash
go version go1.17.6 linux/amd64
这样,你就成功在Linux系统上安装了Go语言。
安装conda
探索Miniconda3:简单、灵活的Python环境和软件包管理利器
Miniconda3是一个轻量级的Anaconda发行版,可以在Miniconda官方网站上下载适合你操作系统的安装包。选择对应的版本(例如,Windows、MacOS或Linux)并下载安装包。
在下载完成后,运行安装脚本并按照提示进行安装。你可以选择默认安装路径,也可以自定义安装路径。
常用依赖项
bash
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
环境变量,使用其他模块代理或直接指向源仓库:shexport GOPROXY=https://goproxy.io,direct
bash
mkdir golov3
cd golov3
go mod init golov3
touch load.go
export GOPROXY=https://goproxy.io,direct
bash
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)
}
}
bash
go get gocv.io/x/gocv
go
在这里插入代码片
换版本
go
module golov3
go 1.21.4
require gocv.io/x/gocv v0.31.0 // indirect
bash
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
bash
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
go
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
bash
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
bash
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
的位置
go
/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
以下是具体步骤:
-
设置
LD_LIBRARY_PATH
环境变量:将 Conda 环境中的库路径添加到
LD_LIBRARY_PATH
:shexport LD_LIBRARY_PATH=/home/aistudio/.conda/envs/myenv/lib:$LD_LIBRARY_PATH
你可以将这条命令添加到你的 shell 配置文件(如
.bashrc
或.zshrc
)中,以便每次启动 shell 时自动设置:shecho 'export LD_LIBRARY_PATH=/home/aistudio/.conda/envs/myenv/lib:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc
-
验证环境变量:
确认
LD_LIBRARY_PATH
已正确设置:shecho $LD_LIBRARY_PATH
你应该看到
/home/aistudio/.conda/envs/myenv/lib
在输出中。 -
重新编译并运行 Go 程序:
确保所有环境变量和库路径都正确设置后,重新编译并运行你的 Go 程序:
shgo run load.go
有权限
本地Linux虚拟机
Ubuntu扩容
我使用虚拟机一度安装失败,发现原因是磁盘内存不足,OpenCV没安装完整
bash
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
有权限(似乎不好用)
bash
sudo apt-get install -y pkg-config
没权限
bash
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
go
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
有权限(似乎不好用)
bash
sudo apt-get update
sudo apt-get install libopencv-dev
没权限
bash
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
bash
find / -name "libopencv_highgui.so.406" 2>/dev/null
我们找到了 libopencv_highgui.so.406
的位置
go
/home/qqq/miniconda3/lib/libopencv_highgui.so.406
/home/qqq/miniconda3/pkgs/libopencv-4.6.0-py310h5bd1119_9/lib/libopencv_highgui.so.406
以下是具体步骤:
-
设置
LD_LIBRARY_PATH
环境变量:将 Conda 环境中的库路径添加到
LD_LIBRARY_PATH
:shexport LD_LIBRARY_PATH=/home/qqq/miniconda3/lib:$LD_LIBRARY_PATH
你可以将这条命令添加到你的 shell 配置文件(如
.bashrc
或.zshrc
)中,以便每次启动 shell 时自动设置:shecho 'export LD_LIBRARY_PATH=/home/qqq/miniconda3/lib:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc
-
验证环境变量:
确认
LD_LIBRARY_PATH
已正确设置:shecho $LD_LIBRARY_PATH
你应该看到
/home/aistudio/.conda/envs/myenv/lib
在输出中。 -
重新编译并运行 Go 程序:
确保所有环境变量和库路径都正确设置后,重新编译并运行你的 Go 程序:
shgo run load.go
WINDOWS(待续,暂未成功)
安装Go
-
打开命令提示符(可以通过按
Win + R
,然后输入cmd
并按回车来打开)。 -
使用
curl
命令下载Go 1.21.11的安装包。如果你没有安装curl
,你可以先安装它们。使用
curl
:shcurl -O https://dl.google.com/go/go1.21.11.windows-amd64.msi
-
打开一个新的命令行窗口(非常重要,因为环境变量的更改需要新的命令行窗口才能生效)。
-
输入以下命令来验证Go是否安装成功:
shgo version
在Windows命令行中设置 GOPROXY 环境变量
以下是一个完整的示例,展示如何在Windows命令行中设置 GOPROXY
环境变量:
-
打开命令提示符。
-
设置
GOPROXY
环境变量(临时):shset GOPROXY=https://goproxy.io,direct
-
或者设置
GOPROXY
环境变量(永久):shsetx GOPROXY https://goproxy.io,direct
-
验证环境变量设置:
shecho %GOPROXY%
通过这些步骤,你应该能够在Windows命令行中成功设置 GOPROXY
环境变量。如果你有任何其他问题,请告诉我。
go
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe
go
setx PATH "%PATH%;C:\Users\admin\miniconda3;C:\Users\admin\miniconda3\Scripts"
如果你看到 'conda' 不是内部或外部命令,也不是可运行的程序或批处理文件
的错误消息,这通常意味着Conda没有正确安装,或者Conda的路径没有添加到系统的环境变量中。
步骤1:安装Conda
如果你还没有安装Conda,可以从以下链接下载并安装:
步骤2:添加Conda到系统路径
如果你已经安装了Conda,但仍然看到错误消息,你需要确保Conda的路径已添加到系统的环境变量中。
方法1:手动添加Conda路径
-
找到Conda的安装路径 :
通常,Conda会安装在你的用户目录下,例如
C:\Users\YourUsername\Anaconda3
或C:\Users\YourUsername\Miniconda3
。 -
添加路径到系统环境变量:
- 右键点击"此电脑"或"计算机",选择"属性"。
- 点击"高级系统设置"。
- 点击"环境变量"。
- 在"系统变量"部分,找到名为
Path
的变量,选中并点击"编辑"。 - 点击"新建",然后添加Conda的安装路径,例如
C:\Users\YourUsername\Anaconda3
和C:\Users\YourUsername\Anaconda3\Scripts
。 - 点击"确定"保存更改。
-
重新启动命令提示符 :
关闭并重新打开命令提示符,以使更改生效。
方法2:使用Conda自带的脚本
如果你使用的是Anaconda Prompt或Miniconda Prompt,这些提示符会自动配置环境变量,你可以直接使用它们。
验证Conda安装
打开命令提示符或Anaconda Prompt,运行以下命令来验证Conda是否正确安装:
sh
conda --version
如果安装成功,你会看到Conda的版本信息。
-
创建新的Conda环境:
shconda create -n gocv-env
-
激活Conda环境:
shconda activate gocv-env
-
安装OpenCV:
shconda install -c conda-forge opencv
-
获取GoCV:
shgo get -u -d gocv.io/x/gocv
-
设置环境变量:
shset OPENCV_DIR=%CONDA_PREFIX% set CGO_CPPFLAGS=-I%CONDA_PREFIX%\Library\include set CGO_LDFLAGS=-L%CONDA_PREFIX%\Library\lib
-
验证安装:
shgo run -tags customenv github.com/hybridgroup/gocv/cmd/version/main.go