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

最近对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
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

简单的基于小波变换的图像压缩(Python)

2023 沃尔夫数学奖得主,给了杜克大学的Ingrid Daubechies(多贝西)教授 以色列沃尔夫基金会理事会成员 Michael Lin 教授在周二宣布: “Ingrid Daubechies is awarded the Wolf Prize for her work in the creation and development of wavel…

搭建k8s集群报错unknown command “\u00a0“ for “kubeadm init“

搭建k8s报错unknown command “\u00a0” for “kubeadm init” 网上搜了一下,是因为复制过来的命令前面包含了空格,将复制的命令放到idea可以清楚看到几个命令前面有空格,删除掉就好了,记录一下

设计模式-享元模式Flyweight(结构型)

享元模式(Flyweight) 享元模式是一种结构型模式,它主要用于减少创建对象的数量,减少内存占用。通过重用现有对象的方式,如果未找到匹配对象则新建对象。线程池、数据库连接池、常量池等池化的思想就是享元模式的一种应用。 图解 角色 享元工…

【团队成长】2024-24周周报-第一次组会人员分工48期推文预告

大家好!我们是IndustryOR 团队,致力于分享业界落地的算法技术。欢迎关注微信公众号/知乎/CSDN【运筹匠心】 。 记录人:张哲铭,算法专家,某互联网大厂 【团队成长/个人成长】系列的推文会以 【工作周报】 的方式记录Ind…

【机器学习】人工智能与气候变化:利用深度学习与机器学习算法预测和缓解环境影响

📝个人主页:哈__ 期待您的关注 目录 🔥引言 1.1 背景介绍 1.2 人工智能与机器学习的崛起 1.3 本文内容概述 🔨气候变化的挑战 2.1 现今气候变化带来的影响和挑战 2.2 引发关注的气候变化趋势和数据 🤖人工智能…

使用SpringBoot对接Kafka

Kafka是什么,以及如何使用SpringBoot对接Kafka 一、Kafka与流处理 我们先来看看比较正式的介绍:Kafka是一种流处理平台,由LinkedIn公司创建,现在是Apache下的开源项目。Kafka通过发布/订阅机制实现消息的异步传输和处理。它具有高…

VMware Workstation安装及使用详细教程

如何安装VMware Workstation的详细教程 一、准备工作 1. 下载VMware Workstation: 访问VMware官方网站,找到VMware Workstation的下载页面。根据您的操作系统(Windows或macOS)选择相应的版本进行下载。确保您的计算机满足VMwar…

牛客小白月赛96 解题报告 | 珂学家

前言 题解 A. 最少胜利题数 签到 n1 len(set(input())) n2 len(set(input()))if n1 < n2:n1, n2 n2, n1print (-1 if n1 6 else n1 - n2 1)B. 最少操作次数 思路: 分类讨论 只有-1,0,1,2这四种结果 特判 01, 10 n int(input()) s input()# 枚举 from collectio…

vue之一键部署的shell脚本和它的点.bat文件、海螺AI、ChatGPT

MENU 前言vite.config.ts的配置deploy文件夹的其他内容remote.shpwd.txtdeploy.bat 前言 1、在src同级新建deploy.bat文件&#xff1b; 2、在src同级新建deploy文件夹&#xff0c;文件夹中新建pwd.txt和remote.sh文件&#xff1b; 3、配置好后&#xff0c;直接双击deploy.bat文…

Java_FileIO流

存储数据的方案 有些数据想长久保存起来&#xff0c;咋整&#xff1f; 文件时非常重要的存储方式&#xff0c;在计算机硬盘中。 即便断电&#xff0c;或者程序终止了&#xff0c;存储在硬盘文件中的数据也不会丢失。 File File 是Java.io.包下的类&#xff0c;File类对象&…

C++ string字符串的使用和简单模拟实现

目录 前言 1. string简介 2. string的使用和简单模拟实现 2.1 string类的定义 2.2 string(),~string()和c_str() 2.2 size&#xff0c;重载符号[ ]&#xff0c;begin和end函数 2.3 push_back&#xff0c;reserve&#xff0c;append&#xff0c;运算符重载 2.4 insert和…

DDPM公式推导(三)

2 Background 扩散模型【53】是一种以 p θ ( x 0 ) : ∫ p θ ( x 0 : T ) d x 1 : T p_\theta\left(\mathbf{x}_0\right):\int p_\theta\left(\mathbf{x}_{0: T}\right) d \mathbf{x}_{1: T} pθ​(x0​):∫pθ​(x0:T​)dx1:T​ 形式的潜在变量模型&#xff0c;其中 x 1…

机器真的能思考、学习和智能地行动吗?

In this post, were going to define what machine learning is and how computers think and learn. Were also going to look at some history relevant to the development of the intelligent machine. 在这篇文章中&#xff0c;我们将定义机器学习是什么&#xff0c;以及…

BerkeleyDB练习

代码; #include <db.h> #include <stdio.h>int main() {DB *dbp;db_create(&dbp, NULL, 0);printf("Berkeley DB version: %s\n", db_version(NULL, NULL, NULL));dbp->close(dbp, 0);return 0; } 编译运行

Android studio在Ubuntu桌面上 创建桌面图标,以及导航栏图标

Android studio在Ubuntu桌面上 创建桌面图标&#xff0c;以及导航栏图标 1. 下载Android studio for Lunux 免安装版本之后&#xff0c;解压 2. 通过控制台运行 ~/Documents/android-studio-2024.1.1.2-linux/android-studio/bin$ ./studio.sh 3. 选择菜单&#xff0c;Tools…

1586. 扫地机器人

问题描述 Mike同学在为扫地机器人设计一个在矩形区域中行走的算法,Mike是这样设计的:先把机器人放在出发点 (1,1)(1,1) 点上,机器人在每个点上都会沿用如下的规则来判断下一个该去的点是哪里。规则:优先向右,如果向右不能走(比如:右侧出了矩形或者右侧扫过了)则尝试向…

基于51单片机的烟雾报警器设计-ADC0809

一.硬件方案 火灾报警器采用51单片机为核心控制器&#xff0c;利用气体传感器MQ-2、ADC0809模数转换器、DS18B20温度传感器等实现基本功能。通过这些传感器和芯片&#xff0c;当环境中可燃气体浓度或温度等发生变化时系统会发出相应的灯光报警信号和声音报警信号&#xff0c;以…

28.启动与暂停程序

上一个内容&#xff1a;27.设计注入功能界面 以它 27.设计注入功能界面 的代码为基础进行修改 点击添加游戏按钮之后就把游戏启动了 CWndINJ.cpp文件中修改&#xff1a; void CWndINJ::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码/*ExeLst.InsertItem(0, L…

Vue I18n国际化插件

Vue I18n国际化插件 安装目录结构及文件内容./locales/lang/zh.js./locales/lang/en.js./locales/index.js main.js引入页面具体使用及语言切换&#xff08;Vue3&#xff09;刷新保存原语言&#xff0c;App.vue添加路由守卫注意点 中文文档&#xff1a; https://kazupon.githu…

69. UE5 RPG 使用Gameplay Cue 实现技能表现效果

在上一章中&#xff0c;我们实现了敌人的攻击技能的特效和音效。如果我们在多人模式下打开&#xff0c;发现&#xff0c;其它客户端看不到对应的效果。 造成这种问题的原因是因为敌人的技能是运行在服务器端的&#xff0c;它只复制到拥有它的客户端&#xff0c;而敌人的效果对于…