Files
MdVison_edu/教程内容.md
2026-06-27 16:59:25 +08:00

220 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MindVison 摄像头使用简述
**前言:**
如需访问官方请点击此处 --> [***MindVision***](https://www.mindvision.com.cn/)
对于摄像头的使用,我们只要学会如何调用以及如何配置相关相机参数就足够了,其余的部分可以不用了解。倘若你感兴趣也可深入细细品尝!
本教程的内容主要是告诉读者摄像头读取的运作方式以及如何配置摄像头,使得读者有一个基本的认识就行。
## 目录
- [第一章 MindVision-SDK安装教程](#第一章-mindvision-sdk安装教程)
- [第一步 获取SDK安装包](#第一步-获取sdk安装包)
- [第二步 解压并安装](#第二步-解压并安装)
- [第二章 MindVision-开发与利用](#第二章-mindvision-开发与利用)
- [第零节 环境的搭配](#第零节-环境的搭配)
- [第一节 demo的运行-浅浅上手](#第一节-demo的运行-浅浅上手)
- [第二节 深入品鉴demo](#第二节-深入品鉴demo)
- [补充](#补充)
- [1.对于Linux下官方驱动程序的安装](#1对于linux下官方程序的编译与应用gtk-demo--qt-demo)
- [2.虚拟机帧率不高的问题](#2虚拟机帧率不高的问题)
## 第一章 MindVision-SDK安装教程
### 第一步 获取SDK安装包
输入下面的命令获取MindVision的***SDK安装包***
```bash
wget https://www.mindvision.com.cn/wp-content/uploads/2026/02/linuxSDK_V2.1.0.49202602041120.tar.gz
```
![图一](component/例一.png)
下载完成之后**ls**会有一个LinuxSDK
![图二](component/例二.png)
### 第二步 解压并安装
```bash
mkdir MindVisionSDK && cd MindVisionSDK
tar -zxf ~/linuxSDK_V2.1.0.49202602041120.tar.gz
```
解压完成后,可以获得如下内容
![图三](component/例三.png)
```text
MindVisionSDK/
├── demo/ // 相机的demo程序工程及源码
├── document/ // 有关linuxSDK详细说明在里面
├── tools // ip配置工具
├── lib // 各平台使用的SDK库文件x86 x64 arm以及arm64
├── include // SDK头文件
├── install.sh: // 安装运行脚本需要root运行
└── 88-mvusb.rules // USB设备权限修改文件
```
之后运行install.sh脚本文件(需要root权限)
```bash
sudo ./install.sh
```
![图四](component/例四.png)
显示这样之后就安装OK了接下来重启虚拟机
## 第二章 MindVision-开发与利用
### 第零节 环境的搭配
为了方便链接MDVS的CameraApi.h需要能跳转定义的配置请下载插件[C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)。**如果你环境OK就[开始demo吧](#第一节-demo的运行-浅浅上手)**
在vscode快捷键`Ctrl+Shift+P`,找到 `C/C++:编译配置(UI)`,之后点击进入。将**C版本与C++版本调为11**。以及对于包含路径,加一句`/usr/include/opencv4`。之后你会看到左侧目录多了一个.vscode的其下有c_cpp_properties.json。
---
![图六](component/例六.png)
---
与此同时,你还会解决这个问题
![图五](component/例五.png)
---
### 第一节 demo的运行-浅浅上手
在我们的`demo`文件夹下存放案例`example1.cpp`。直接在工作文件夹终端键入`xmake run`
---
![图七](component/例七.png)
---
显示这个错误说明代码成功了!!!!你只是没有连接摄像头。
如果你连接了摄像头,但是很卡顿请阅读[虚拟机帧率不高的问题](#2虚拟机帧率不高的问题)
### 第二节 深入品鉴demo
**MindVision摄像头读**取大致流程:
![图九](component/例九.png)
有关所有的错误抛出定义请阅读`CameraStatus.h`.
下面将简单分析代码作用,对于相机驱动函数的参数请自行阅读`CameraApi.h`.
```cpp
CameraSdkInit(1); // 相机接口初始化函数
iStatues = CameraEnumerateDevice(&tCameraEnumList, &iCameraCounts); // 枚举相机
iStatues = CameraInit(&tCameraEnumList, -1, -1, &hCamera) // 相机初始化
CameraGetCapability(hCamera, &tCapability); // 获取相机内部配置信息
g_pRgbBuffer = (unsigned char*)malloc(tCapability.sResolutionRange.iHeightMax*tCapability.sResolutionRange.iWidthMax*3); // 分配与相机内部画面相同的空间!!!
CameraPlay(hCamera); // 启动相机
CameraSetAeState(hCamera, false); // 相机曝光相关的设置......
setStatues = CameraSetExposureTime(hCamera, 5000);
CameraSetGain(hCamera, 100, 70, 50);
```
后面所有有关相机画面设置相关的内容,直接调用函数配置就行。
例如:
```cpp
iStatues = CameraConnectTest(hCamera); // CameraConnectTest 检查相机连接状态的函数,
```
根据函数接口定义进行调用。
```cpp
/******************************************************/
// 函数名 : CameraReConnect
// 功能描述 : 重新连接设备用于USB设备意外掉线后重连
// 参数 : hCamera 相机的句柄由CameraInit函数获得。
// 返回值 : 成功时返回CAMERA_STATUS_SUCCESS (0);
// 否则返回非0值的错误码,请参考CameraStatus.h
// 中错误码的定义。
/******************************************************/
MVSDK_API CameraSdkStatus CameraReConnect(
CameraHandle hCamera
);
```
**关键**:对于每次获取画面之后,记得清理调用`CameraGetImageBuffer`缓冲区。具体细节请参阅`CameraGetImageBuffer`函数说明!!!
对于正常的工况MindVisionApi给我们提供了摄像头重连、状态检测等等的函数接口我们直接调用就可以用最为简洁的代码提高摄像头连接的抗干扰能力
## 第三节 对于一些关键接口的列表
| 函数名 | 作用 |
| :----: | :----: |
| CameraSetAeState | 设置相机曝光的模式。自动或者手动。(如果需要自定义曝光一定要先设置为手动)|
| CameraSetExposureTime | 设置曝光时间。单位为微秒。 |
| CameraSetFrameSpeed | 设定相机输出图像的帧率。 |
| CameraCreateSettingPageEx | 创建该相机的属性配置窗口。调用该函数SDK内部会帮您创建好相机的配置窗口 |
| CameraReConnect | 重新连接设备用于USB设备意外掉线后重连 |
| CameraConnectTest | 测试相机的连接状态,用于检测相机是否掉线 |
| CameraSetImageResolution | 设置预览的分辨率。|
至此摄像头使用已大致讲述完毕,有任何问题请在飞书联系,谢谢
## &补充
### 1.对于Linux下官方程序的编译与应用(GTK-demo / QT-demo)
***前言*** 考虑到队员们的系统都为Windows虚拟机与MindVision摄像头连接不畅不考虑安装官方Linux的驱动程序对于镜头参数的调节我的观点是在Windows的驱动程序[MVDCP2](https://www.mindvision.com.cn/wp-content/uploads/2026/04/MindVision-Camera-Platform-Setup2.1.10.195_202604021438.exe)上进行图像调节再将对应参数修改考虑到NUC为Linux赛场调试可能需要故对此部分进行说明。
#### 1.1 GTK_Demo 版本
首先安装GTK库
```bash
sudo apt install libgtk2.0-dev
```
之后进入MindVisionSDK/demo/GTK_Demo编译
```bash
cd MindVisionSDK/demo/GTK_Demo
make clean
make
./Gtk_Demo // 开始运行
```
`make clean`可能会报如下错误
![图十](component/例十.png)
**原因:**源码包里的 Makefile 是在另一个环境下生成的,与你的系统不匹配,导致 .deps/ 目录缺失。
```bash
# 1. 清理旧的生成文件
make distclean 2>/dev/null || true
rm -rf autom4te.cache .deps Makefile Makefile.in config.status config.log
# 2. 重新生成 configure 脚本和 Makefile.in
autoreconf -fi
# 3. 配置
./configure
# 4. 编译
make
# 5.运行demo
./GTK_demo
```
如果还会报如下问题,就是你的 ***摄像头没有连接*** 以及你没有将 ***USB3.0*** 配置好。
```text
// GTK 音频模块,不影响相机功能,只是没有系统提示音。这个错误可以忽略。
Gtk-Message: Failed to load module "canberra-gtk-module"
// CXPCoaXPress接口 的驱动文件。这个错误可以忽略。
CtiPath: /usr/lib/fg_cxp.cti is error or system not find
CXP system count:0
// 相机连接失败,最终检测到 0 个相机。
DetectMSDevice......................
MSCamera Begin link........................
user control fd open failed
BackWorkerStop
begin destory msdevice
end destory msdevice
End DetectMSDevice
iCameraCounts =0
```
解决上述问题之后运行`./GTK_demo`要选择第几个相机默认按0开始输入***0 回车 打开第一个相机***
#### 1.2 QT-demo 版本
首先安装***QT5基础安装包***QT4版本的demo就不用了
```bash
sudo apt update
sudo apt install build-essential qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
sudo apt install qtcreator
// 进入Qt
qtcreator &
```
之后在QT里面选择打开QT5_demo里面的`.pro`文件,之后在确保摄像头连接的情况下点击**Run**.
![图十一](component/例十一.png)
### 2.虚拟机帧率不高的问题
在虚拟机中默认的接口为***USB2.0***MindVision摄像头**高帧率**需使用**USB3.0**及以上。
![图八](component/例八.png)
修改后记得重启虚拟机。
............... 未完待续
```text
Author Simba-Jokit
Date: 2026/6/25
```