
https://raw.githubusercontent.com/hybridgroup/gocv/release/images/gocvlogo.jpg]([***]

GoCV包提供Go语言对OpenCV 4计算机视觉库的绑定。该包支持最新版本的Go和OpenCV(v4.5.3),适用于Linux、macOS和Windows系统,旨在使Go语言成为与OpenCV生态系统最新发展兼容的“一等”客户端。
GoCV支持使用Nvidia GPU的CUDA硬件加速,详情参见CUDA README;同时支持Intel OpenVINO工具包,详情参见OpenVINO README。
以下示例打开设备“0”(通常为默认摄像头),读取视频帧并在GUI窗口显示:
gopackage main import ( "gocv.io/x/gocv" ) func main() { webcam, _ := gocv.OpenVideoCapture(0) window := gocv.NewWindow("Hello") img := gocv.NewMat() for { webcam.Read(&img) window.IMShow(img) window.WaitKey(1) } }
!https://raw.githubusercontent.com/hybridgroup/gocv/release/images/face-detect.jpg
该示例打开摄像头,使用级联分类器检测人脸并绘制绿色矩形框:
gopackage main import ( "fmt" "image/color" "gocv.io/x/gocv" ) func main() { // 设置使用视频捕获设备0 deviceID := 0 // 打开摄像头 webcam, err := gocv.OpenVideoCapture(deviceID) if err != nil { fmt.Println(err) return } defer webcam.Close() // 打开显示窗口 window := gocv.NewWindow("Face Detect") defer window.Close() // 准备图像矩阵 img := gocv.NewMat() defer img.Close() // 人脸检测框颜色(蓝色) blue := color.RGBA{0, 0, 255, 0} // 加载人脸分类器 classifier := gocv.NewCascadeClassifier() defer classifier.Close() if !classifier.Load("data/haarcascade_frontalface_default.xml") { fmt.Println("错误:无法读取分类器文件 data/haarcascade_frontalface_default.xml") return } fmt.Printf("开始读取摄像头设备: %v\n", deviceID) for { if ok := webcam.Read(&img); !ok { fmt.Printf("无法读取设备 %v\n", deviceID) return } if img.Empty() { continue } // 检测人脸 rects := classifier.DetectMultiScale(img) fmt.Printf("发现 %d 个人脸\n", len(rects)) // 在图像上绘制人脸矩形框 for _, r := range rects { gocv.Rectangle(&img, r, blue, 3) } // 在窗口显示图像,等待1毫秒 window.IMShow(img) window.WaitKey(1) } }
项目cmd目录提供多种实用命令行工具示例:
安装GoCV前需先安装匹配版本的OpenCV(当前需OpenCV 4.5.3),以下是各系统安装指南。
快速安装
克隆仓库:
shellcd $HOME/folder/with/your/src/ git clone https://github.com/hybridgroup/gocv.git cd gocv
使用Makefile安装OpenCV 4.5.3:
shellmake install
如需静态库:
shellmake install BUILD_SHARED_LIBS=OFF
成功安装后将显示:
gocv version: 0.28.0 opencv lib version: 4.5.3
使用CUDA
参见cuda目录获取详细说明。
使用OpenCV+CUDA+OpenVINO
shellcd $HOME/folder/with/gocv/ make install_all
如需静态库:
shellmake install_all BUILD_SHARED_LIBS=OFF
验证安装
shellcd $HOME/src/gocv.io/x/gocv go run ./cmd/version/main.go
应输出:
gocv version: 0.28.0 opencv lib version: 4.5.3
自定义环境变量
禁用pkg-config自动配置,手动设置CGO环境变量:
shellexport CGO_CPPFLAGS="-I/usr/local/include" export CGO_LDFLAGS="-L/usr/local/lib -lopencv_core -lopencv_face -lopencv_videoio -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs -lopencv_objdetect -lopencv_features2d -lopencv_video -lopencv_dnn -lopencv_xfeatures2d" go run -tags customenv ./cmd/version/main.go
安装Homebrew后执行:
shellbrew install opencv pkgconfig
验证安装:
shellcd $HOME/folder/with/your/src/gocv go run ./cmd/version/main.go
C:\Program Files\mingw-w64\x86_64-7.3.0-posix-seh-rt_v5-rev2\mingw64\bincmdchdir %GOPATH%\src\gocv.io\x\gocv win_build_opencv.cmd
C:\opencv\build\install\x64\mingw\bincmdgo run cmd\version\main.go
shellcd $HOME/folder/with/your/src/ git clone https://github.com/hybridgroup/gocv.git cd gocv make install_raspi
项目提供Dockerfile,可通过Makefile快速构建:
shellmake docker
指定Go版本:
shellmake docker GOVERSION='1.15'
安装依赖:
shellbrew cask install xquartz brew install socat
安装后需注销并重新登录
配置XQuartz:
启动socat代理:
shellsocat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
运行容器:
shelldocker run -it --rm -e DISPLAY=docker.for.mac.host.internal:0 your-gocv-app
注意:Docker for Mac不支持摄像头设备,无法运行依赖摄像头的应用
GoCV的Mat对象需显式关闭以避免内存泄漏,可使用-tags matprofile构建标签启用内存分析:
shellgo run -tags matprofile cmd/version/main.go
通过gocv.MatProfile.Count()获取未释放Mat数量,或集成HTTP调试接口监控:
goimport _ "net/http/pprof" // 启动HTTP服务后访问 http://localhost:6060/debug/pprof/gocv.io/x/gocv.Mat
===FULL_DESC===# GoCV
https://raw.githubusercontent.com/hybridgroup/gocv/release/images/gocvlogo.jpg]([***]

GoCV包提供Go语言对OpenCV 4计算机视觉库的绑定。该包支持最新版本的Go和OpenCV(v4.5.3),适用于Linux、macOS和Windows系统,旨在使Go语言成为与OpenCV生态系统最新发展兼容的"一等"客户端。
GoCV支持使用Nvidia GPU的CUDA硬件加速,详情参见CUDA README;同时支持Intel OpenVINO工具包,详情参见OpenVINO README。
以下示例打开设备"0"(通常为默认摄像头),读取视频帧并在GUI窗口显示:
gopackage main import ( "gocv.io/x/gocv" ) func main() { webcam, _ := gocv.OpenVideoCapture(0) window := gocv.NewWindow("Hello") img := gocv.NewMat() for { webcam.Read(&img) window.IMShow(img) window.WaitKey(1) } }
!https://raw.githubusercontent.com/hybridgroup/gocv/release/images/face-detect.jpg
该示例打开摄像头,使用级联分类器检测人脸并绘制绿色矩形框:
gopackage main import ( "fmt" "image/color" "gocv.io/x/gocv" ) func main() { // 设置使用视频捕获设备0 deviceID := 0 // 打开摄像头 webcam, err := gocv.OpenVideoCapture(deviceID) if err != nil { fmt.Println(err) return } defer webcam.Close() // 打开显示窗口 window := gocv.NewWindow("Face Detect") defer window.Close() // 准备图像矩阵 img := gocv.NewMat() defer img.Close() // 人脸检测框颜色(蓝色) blue := color.RGBA{0, 0, 255, 0} // 加载人脸分类器 classifier := gocv.NewCascadeClassifier() defer classifier.Close() if !classifier.Load("data/haarcascade_frontalface_default.xml") { fmt.Println("错误:无法读取分类器文件 data/haarcascade_frontalface_default.xml") return } fmt.Printf("开始读取摄像头设备: %v\n", deviceID) for { if ok := webcam.Read(&img); !ok { fmt.Printf("无法读取设备 %v\n", deviceID) return } if img.Empty() { continue } // 检测人脸 rects := classifier.DetectMultiScale(img) fmt.Printf("发现 %d 个人脸\n", len(rects)) // 在图像上绘制人脸矩形框 for _, r := range rects { gocv.Rectangle(&img, r, blue, 3) } // 在窗口显示图像,等待1毫秒 window.IMShow(img) window.WaitKey(1) } }
项目cmd目录提供多种实用命令行工具示例:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务