网站举报网,大连软件培训,网页美工设计实训心得,教做美食的网站本专栏从实际需求场景出发详细还原、分别介绍大型工业化场景、专业实验室场景、自动化生产线场景、各种视觉检测物体场景介绍本专栏应用场景 更适合涉及到视觉相关工作者、包括但不限于一线操作人员、现场实施人员、项目相关维护人员#xff0c;希望了解2D、3D相机视觉相关操作… 本专栏从实际需求场景出发详细还原、分别介绍大型工业化场景、专业实验室场景、自动化生产线场景、各种视觉检测物体场景介绍本专栏应用场景 更适合涉及到视觉相关工作者、包括但不限于一线操作人员、现场实施人员、项目相关维护人员希望了解2D、3D相机视觉相关操作原理、已经出现问题快速排查、快速解决现场难题推荐阅读本系列文章 同时也适合新手入门或者想深入研究、正在接触该类型项目开发的开发者研究的阅读文章 视觉软件中从: 1.工业场景的相机选型 2: 相机SDK的模拟开发 各种模式设置、内部回调、返回图像、内部SDK编写、各种各类的SDK接口实现 3. 工业视觉软件的界面设计ui的各种使用方法、SDK集成、多线程处理、buffer图像缓存处理、图像不同的处理显示、每个过程均会详细介绍实现 4. opencv 图像处理的各个过程
文章说明: 本系列分为两个部分 1. 各种相机的介绍、原理操作、适宜的场景 2. 相机SDK开发、编写SDK、工业软件、相关技术文章
有不足的地方请留言会改进本系列文章预计不低于30篇 预计半年之内完结
使用到相关技术 会引入博主发布的技术文章方便学习 真正做到 浅入深出通俗易懂 高效 的学会相关技术短暂会使用虚拟SDK、接口来进行发布文章 编写界面后续会在海康、大恒中间选择一款 版权声明本文禁止转载、复制二次发布仅供付费读者研究 有相关问题请联系 Dream.2017qq.com 官方网站 www.dreambegins.vip QT 机器视觉 (3. 虚拟相机SDK、测试工具)目录
1 目录结构
2 QVirtualCamera
2.1 设置
3 QVirtualCameraTest
2.1 设置
3 运行效果
4 其它文章 本章实现了
1 目录结构 2 QVirtualCamera
// QVirtualCamera.h
#pragma once#include QtCore/qglobal.h
#include functional
#include thread
#include chrono
#include cstdlib
#include mutex#ifndef BUILD_STATIC
# if defined(QVIRTUALCAMERA_LIB)
# define QVIRTUALCAMERA_EXPORT Q_DECL_EXPORT
# else
# define QVIRTUALCAMERA_EXPORT Q_DECL_IMPORT
# endif
#else
# define QVIRTUALCAMERA_EXPORT
#endif// 图像数据回调类型
typedef std::functionvoid(const unsigned char* data, int width, int height) ImageCallback;class QVirtualCamera
{
public:QVirtualCamera();static ImageCallback g_imageCallback; // 静态成员变量static bool g_running; // 静态成员变量static std::mutex g_mutex; // 互斥量// 模拟图像数据生成void GenerateImageData(unsigned char* data, int width, int height);void RegisterImageCallback(ImageCallback callback);void StartCamera();void StopCamera();
}; // QVirtualCamera.cpp
#include QVirtualCamera.hbool QVirtualCamera::g_running false; // 静态成员初始化
ImageCallback QVirtualCamera::g_imageCallback; // 静态成员初始化
std::mutex QVirtualCamera::g_mutex; // 互斥量初始化QVirtualCamera::QVirtualCamera()
{srand(static_castunsigned int(time(0))); // 初始化随机数种子
}// 模拟图像数据生成
void QVirtualCamera::GenerateImageData(unsigned char* data, int width, int height)
{for (int i 0; i width * height * 3; i) {data[i] static_castunsigned char(rand() % 256); // 随机生成图像数据}
}// 启动虚拟相机
void QVirtualCamera::StartCamera()
{g_running true;std::thread([]() {const int width 640;const int height 480;unsigned char* imageData new unsigned char[width * height * 3]; // RGB图像数据while (g_running) {GenerateImageData(imageData, width, height); // 生成图像数据// 使用互斥量保护回调函数的访问{std::lock_guardstd::mutex lock(g_mutex);if (g_imageCallback) {g_imageCallback(imageData, width, height); // 调用回调函数}}std::this_thread::sleep_for(std::chrono::milliseconds(100)); // 模拟帧率}delete[] imageData; // 清理内存}).detach();
}// 停止虚拟相机
void QVirtualCamera::StopCamera()
{g_running false;
}// 注册图像回调
void QVirtualCamera::RegisterImageCallback(ImageCallback callback)
{std::lock_guardstd::mutex lock(g_mutex); // 使用互斥量保护g_imageCallback callback;
}
2.1 设置
常规输出目录
$(SolutionDir)QPlugin\$(Configuration)\
配置类型
静态库(.lib) 浏览信息 生成后事件 xcopy /Y /I QVirtualCamera.h $(SolutionDir)QPlugin\$(Configuration)\include\ 说明 具体目录自行决定debug目录和release注意区分 3 QVirtualCameraTest #pragma once#include QtWidgets/QMainWindow
#include ui_QVirtualCameraTest.h
#include iostream
#include Windows.h#include QDebug
#include QVirtualCamera.hclass QVirtualCameraTest : public QMainWindow
{Q_OBJECTpublic:QVirtualCameraTest(QWidget *parent nullptr);~QVirtualCameraTest();private:Ui::QVirtualCameraTestClass ui;QVirtualCamera* mpCamera;void OnInDialog();static void ImageReceived(const unsigned char* data, int width, int height);
};#include QVirtualCameraTest.hQVirtualCameraTest::QVirtualCameraTest(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);OnInDialog();
}QVirtualCameraTest::~QVirtualCameraTest()
{}void QVirtualCameraTest::ImageReceived(const unsigned char* data, int width, int height)
{QDateTime currentDateTime QDateTime::currentDateTime();qDebug() currentDateTime.toString() Received image of size: width x height ;// 处理图像数据
}void QVirtualCameraTest::OnInDialog()
{mpCamera new QVirtualCamera;// 注册回调mpCamera-RegisterImageCallback(ImageReceived);// 启动虚拟相机mpCamera-StartCamera();// 模拟运行一段时间//std::this_thread::sleep_for(std::chrono::seconds(10000));停止虚拟相机//mpCamera-StopCamera();}
2.1 设置
C/C 常规 附加包含目录
\QVirtualClass\QPlugin\Debug\
连接器 常规 附加库目录
QVirtualClass\QPlugin\Debug;
连接器 输入
QVirtualCamera.lib;
说明 具体目录自行决定debug目录和release注意区分 3 运行效果 4 其它文章
QT 机器视觉 1.相机类型-CSDN博客
QT 机器视觉 2.应用场景详解-CSDN博客