关注【索引目录】服务号,更多精彩内容等你来探索!
说到从外部设备捕获图像,通常可以将这类设备分为三类:网络摄像头、IP 摄像头和视频采集卡。本指南的主题是网络摄像头。
在分析了与摄像头交互的方法之后,我们将重点介绍开源项目 openCV。使用这些库,我们既可以在 C\C++ 上原生运行,也可以使用高级语言(例如 Golang)编写包装程序。
你好视频
包装器程序的代码非常简单。这是一个教学示例(使用 gocv 包装器):
package main
import (
"gocv.io/x/gocv"
)
func main() {
webcam, _ := gocv.VideoCaptureDevice(0)
window := gocv.NewWindow("Hello")
img := gocv.NewMat()
for {
webcam.Read(&img)
window.IMShow(img)
window.WaitKey(1)
}
}
代码编写的便捷性代价是 OpenCV 库的汇编和链接。由于 ATM 运行在 MS Windows 上,情况变得更加复杂。让我们从头到尾详细地讲解一下这个过程。
代码编写的便捷性代价是 OpenCV 库的汇编和链接。由于某些设备有时运行在 MS Windows 上,情况变得更加复杂 =) 让我们从头到尾详细地讲解一下这个过程。
-
下载并安装 MSYS2:
https://www.msys2.org/
-
启动 MSYS2 MSYS(通过“开始”) pacman -Syu
重新启动 MSYS2 并运行:
pacman -Su
pacman -S mingw-w64-x86_64-gcc
$env:PATH += ";C:\msys64\mingw64\bin"
gcc --version
以下是有关如何在 Windows 下使用“contrib”模块(包括 Aruco)构建 OpenCV 的分步指南:
-
下载 opencv 源代码
假设创建了目录C:\sources
cd C:\sources
git clone https://github.com/opencv/opencv.git
// create the opencv directory
git clone https://github.com/opencv/opencv_contrib.git
// create the opencv_contrib directory
-
安装CMake从官方网站下载安装程序:
https://cmake.org/download/
在安装过程中,选中“将 CMake 添加到系统 PATH”——这样您就可以从命令行调用 cmake。
注意!可以直接从 MS Visual Studio 2022 软件包中安装“使用 C++ 进行桌面开发”工作负载,该工作负载将提供 CMake
-
在 MSYS2 中(由于您已使用 C:\msys64\mingw64\bin),mingw32-make 实用程序包含在 mingw-w64-x86_64-make 软件包中。安装方法如下:
运行 MSYS2 MinGW-64 位(不是通常的“MSYS2 MSYS”!)shell。
更新软件包数据库和系统本身:pacman -Syu
(如果询问,请重新启动 shell 并再次重复 pacman -Syu)
安装 make:
pacman -S mingw-w64-x86_64-make
检查它现在是否在 PATH 中可用:
where mingw32-make
-
运行 make 假设我们已将 сmake 安装为 Visual Studio 的组件。要运行 CMake,请运行 VS 2022 的 x64 Native Tools Command Promt。
下载并安装 Python >= 3.6 https://www.python.org/downloads/windows/
安装 numPy
py -m pip install --upgrade pip
py -m pip install numpy
或者可选地使用 make 标志-D WITH_PYTHON=OFF
set "PATH=C:\msys64\mingw64\bin;%PATH%" //set mingw instead of cl.exe from MS VS
注意! MS VS 兼容构建已弃用,需要其他标志和组件。MS VS 和 MinGW 库也互斥!
cmake -S C:/sources/opencv -B C:/build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Relecmake -S C:/sources/opencv -B C:/build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DOPENCV_EXTRA_MODULES_PATH=C:/sources/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX=C:/build/install -D BUILD_opencv_world=ON -DBUILD_SHARED_LIBS=ON -DBUILD_EXAMPLES=OFF
标志-D BUILD_opencv_world=ON可以将库组装成 1 个文件。- 可选,推荐!
-
Make && make install 假设我们在C:\buld目录 中构建
c:\build> mingw32-make -j8
c:\build> mingw32-make install
-
构建 Go GoCV 包装器可执行文件
电源外壳:
$env:CGO_ENABLED = "1"
$env:CGO_CFLAGS = "-IC:/build/install/include -IC:/build/install/include/opencv2"
$env:CGO_CXXFLAGS = "-IC:/build/install/include -IC:/build/install/include/opencv2"
$env:CGO_LDFLAGS = "-LC:/build/install/x64/mingw/lib -lopencv_world4110"
go build -x -tags customenv -ldflags="-H=windows" -o capture.exe main.go
最新的 GoCV 版本需要 openCV 4.1.1,但您可以使用较新的 4.1.2 版本进行构建,只需重命名库 libopencv_world4120 => libopencv_world4110(4.1.2 编译效果更好)。
4.1.2 库构建得更好,因为修复了标头声明中的一些不准确之处,这些问题在 Windows 下构建时会导致一些问题。
关注【索引目录】服务号,更多精彩内容等你来探索!

