gocv安装-windows上go安装opencv-2025
参考【go 安装opencv(gocv,windows)(根据gocv官方教程)】,文章距今3年,版本有升级,操作也稍有区别。
参考gocv的官方安装文档 https://pkg.go.dev/gocv.io/x/gocv@v0.41.0#readme-windows
关于版本
202504
go version: 1.22
gocv version: 0.41.0
opencv lib version: 4.11.0
cmake version: 4.0.1
MinGW-W64 version: x86_64-8.1.0-release-posix-seh-rt_v6-rev0
步骤
- 安装go,官方下载地址:https://golang.google.cn/dl/
- 安装gocv,命令行:
go get -u -d gocv.io/x/gocv(-u表示更新到最新版 -d表示仅下载)- 安装完成之后,在
%GOPATH%\pkg\mod\gocv.io\x\gocv@v0.41.0有一个文件win_build_opencv.cmd,为opencv的编译安装脚本。里面会自动到github下载 opencv 和 opencv_contrib 模块。可以手动下载,也可以自动下载。
- 安装完成之后,在
- 安装MinGW-W64,x86_64-8.1.0-release-posix-seh-rt_v6-rev0 下载地址,下载完成后解压到任意路径,并将
x86_64-8.1.0-release-posix-seh-rt_v6-rev0\mingw64\bin配置上环境变量。(如果bin目录的全路径为C:\Program Files\mingw-w64\x86_64-8.1.0-release-posix-seh-rt_v6-rev0\mingw64\bin,也可以不用配置,因为gocv在编译时,会默认增加该临时环境变量)。 - 安装cmake,官方下载地址:https://cmake.org/download/ ,直接下载Windows的.msi安装包即可。下载完成之后双击安装。安装后会自动增加环境变量,无需手动增加。
- (可选)手动下载 OpenCV 和 OpenCV Contrib 模块,opencv-4.11.0.zip的github下载地址,opencv_contrib-4.11.0.zip的github下载地址。下载完成之后,复制一份放到
C:\opencv\文件夹下,用于编译opencv,之后运行脚本会自动删除。 - 进入
%GOPATH%\pkg\mod\gocv.io\x\gocv@v0.41.0,双击执行win_build_opencv.cmd进行编译。- 如果手动下载了 OpenCV 和 OpenCV Contrib 模块,应当修改该cmd文件,将下载文件的代码注释掉(该文件为只读文件,也可以在同级目录下复制出副本并修改)。找到内容为
powershell -command "[Net.ServicePointManager] xxxxx的部分,在行首添加REM表示注释,共需要注释2处。
- 如果手动下载了 OpenCV 和 OpenCV Contrib 模块,应当修改该cmd文件,将下载文件的代码注释掉(该文件为只读文件,也可以在同级目录下复制出副本并修改)。找到内容为
- 编译完成后,将新的文件夹配置到环境变量:
C:\opencv\build\install\x64\mingw\bin
测试
安装完成之后,可以使用代码测试安装是否成功。官方也提供了示例代码,位置在%GOPATH%\pkg\mod\gocv.io\x\gocv@v0.41.0\cmd\version\main.go,直接使用go run main.go运行,能输出gocv和opencv的版本就是成功安装。
问题
问题1
当前版本在编译时,会报错,内容类似:
.... Compatibility with CMake < 3.5 has been removed from CMake. Update the VERSION argument value. ....
这是一个版本兼容性的问题。解决方案是按照错误提示,修改一个配置文件。我遇到的报错指明该文件为:C:\opencv\opencv-4.11.0\cmake\OpenCVGenPkgconfig.cmake,需要对cmake_minimum_required的值进行修改:cmake_minimum_required(VERSION 4.0)。
问题2
执行cmd文件进行编译时,可能在出现报错时,cmd窗口也会自动关闭。此时可以修改cmd文件,在文件最后增加一行pause,来让所有命令执行完成后暂停。
附cmd
我手动下载的 opencv 和 opencv_contrib 模块,所以将官方的cmd文件单独复制出一份并做了自动下载代码的删减,仅保留后半。
还需要将下载的模块解压后,分别放到如cmd描述中的 C:\opencv\opencv-4.11.0 和 C:\opencv\opencv_contrib-4.11.0 目录下。
我这里的修改是,将最后三行内容注释了(作用是删除两个模块的源文件),并再结尾增加一行pause用来暂停程序看日志。
cd /D C:\opencv\build
set PATH=%PATH%;C:\Program Files\CMake\bin;C:\Program Files\mingw-w64\x86_64-8.1.0-release-posix-seh-rt_v6-rev0\mingw64\bin
if [%1]==[static] (
echo Build static opencv
set enable_shared=OFF
) else (
set enable_shared=ON
)
cmake C:\opencv\opencv-4.11.0 -G "MinGW Makefiles" -BC:\opencv\build -DENABLE_CXX11=ON -DOPENCV_EXTRA_MODULES_PATH=C:\opencv\opencv_contrib-4.11.0\modules -DBUILD_SHARED_LIBS=%enable_shared% -DWITH_IPP=OFF -DWITH_MSMF=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=ON -DBUILD_opencv_java=OFF -DBUILD_opencv_python=OFF -DBUILD_opencv_python2=OFF -DBUILD_opencv_python3=OFF -DBUILD_DOCS=OFF -DENABLE_PRECOMPILED_HEADERS=OFF -DBUILD_opencv_saliency=OFF -DBUILD_opencv_wechat_qrcode=ON -DCPU_DISPATCH= -DOPENCV_GENERATE_PKGCONFIG=ON -DWITH_OPENCL_D3D11_NV=OFF -DOPENCV_ALLOCATOR_STATS_COUNTER_TYPE=int64_t -Wno-dev
mingw32-make -j%NUMBER_OF_PROCESSORS%
mingw32-make install
REM rmdir c:\opencv\opencv-4.11.0 /s /q
REM rmdir c:\opencv\opencv_contrib-4.11.0 /s /q
REM chdir /D %GOPATH%\src\gocv.io\x\gocv
pause
浙公网安备 33010602011771号