大数跨境

GoCV + openCV:一种捕获视频的方法

GoCV + openCV:一种捕获视频的方法 索引目录
2025-06-24
0
导读:关注【索引目录】服务号,更多精彩内容等你来探索!说到从外部设备捕获图像,通常可以将这类设备分为三类:网络摄像头、IP 摄像头和视频采集卡。

关注【索引目录】服务号,更多精彩内容等你来探索!

说到从外部设备捕获图像,通常可以将这类设备分为三类:网络摄像头、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 上,情况变得更加复杂 =) 让我们从头到尾详细地讲解一下这个过程。

  1. 下载并安装 MSYS2:

https://www.msys2.org/

  1. 启动 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 的分步指南:

  1. 下载 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
  1. 安装CMake从官方网站下载安装程序:

https://cmake.org/download/

在安装过程中,选中“将 CMake 添加到系统 PATH”——这样您就可以从命令行调用 cmake。

注意!可以直接从 MS Visual Studio 2022 软件包中安装“使用 C++ 进行桌面开发”工作负载,该工作负载将提供 CMake

  1. 在 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

  1. 运行 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 个文件。- 可选,推荐!

  1. Make && make install 假设我们在C:\buld目录 中构建
c:\build> mingw32-make -j8
c:\build> mingw32-make install
  1. 构建 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 下构建时会导致一些问题。


关注【索引目录】服务号,更多精彩内容等你来探索!


【声明】内容源于网络
0
0
索引目录
索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
内容 444
粉丝 0
索引目录 索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
总阅读12
粉丝0
内容444