# BLCB **Repository Path**: qiuruiqi/blcb ## Basic Information - **Project Name**: BLCB - **Description**: 背光源代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-04-05 - **Last Updated**: 2025-11-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## API ### 用于存储图片的Product类 Product类可以用于存储不同相机的白底、侧光原图和白底、侧光ROI图,方便后续的参数传递和调用。其主要通过枚举类CameraType来选择不同的相机。 ```c++ enum cameraType { CAMERA_MAIN, CAMERA_RIGHT, CAMERA_LEFT, CAMERA_FRONT, CAMERA_ADS, }; ``` example: ```C++ #include "Model/product.h" //... Product product; Mat mainWhiteSrc, mainWhiteROI, leftSideLightSrc, rightSideLightROI; product.setWhiteSrc(CAMERA_MAIN, mainWhiteSrc); product.setWhiteROI(CAMERA_MAIN, mainWhiteROI); product.setSideLightSrc(CAMERA_LEFT, leftSideLightSrc); product.setSideLightROI(CAMERA_RIGHT, rightSideLightSrc); leftSideLisghtROI = product.getSideLightROI(CAMERA_LEFT); //... ``` ### 针对Product类的线程安全的入队出队 PictureQueue内含互斥锁,可以跨线程使用。 ```c++ #include "Model/picturequeue.h" #include "Model/product.h" //... Product tmpProdcut, resultProduct; PictureQueue queue; queue.enQueue(&tmpProdcut); &resultProduct = queue.dequeue(); //... ``` ### 日志系统 将原来的logPtr指针采用单例模式进行封装,便于全局调用,同时保证全局只有一个实例,避免了内存泄露的问题,同时在任何地方都可以非常方便输出日志。 ```c++ #include "threadsafelog.h" int main() { //获取实例对象,该实例对象会在第一次获取时自动初始化,程序结束时自动删除内存,无需手动管理,随调随用 SimpleLog* instance = SimpleLog::getInstance(); //两种输出日志的方式,第一种输出到time_thread_safe.txt,第二种输出到time.txt instance->debug_msg("test"); instance->debug_msg2("spent time"); //移除所有日志文件 instance->removeLogFile() } ``` ### 定时器 定义在**tools/time.h**中,为原来mainwindow.h中的同名函数替换,需要指定命名空间**Tools**: ```C++ #include "tools/time.h" int main() { // 都是延时ms,实现方式不同,第一个采用全局事件循环,即阻塞当前任务,执行其它任务(如UI刷新); // 第二个采用局部定时器,会阻塞整个循环(包括UI刷新) Tools::delay(100); Tools::delay_msec(100); } ```