摘要:
无边框,设置样式表 QMessageBox msgBox; msgBox.setStyleSheet("font-size:14px;color:red;"); msgBox.setWindowFlags( Qt::FramelessWindowHint); msgBox.setText(QStri 阅读全文
摘要:
我在定义圆的直径时,考虑到不可能是负数,就定义成了 unsigned int 但是在做两个直径的差时,遇到了问题,就是为负数时会得到一个极大的正值,因为返回的结果类型必定是 unsigned int 这虽然是很基础的知识,但是在做差时,根本不会想起来这是unsigned int类型,认为得到的就是负 阅读全文
摘要:
一般项目exe通过调用各种封装的dll来完成工作。视觉项目exe调用采集库dll、检测算法dll就可以了,有一定积累后凝练出框架库dll(日志、队列、线程池等必不可少的部分封装) 它们之间通过“接口函数+数据”来配合。 针对采集dll: IGrabber.h 里放接口函数,如开始采集、停止采集、se 阅读全文
摘要:
C++的可变参数模板不在本文讨论范围,只用了C的可变参数 ... 做了如下约定: 第一个函参是参数个数 所有可变参数都是size_t类型 #include<stdarg.h> //for va_start等 #include<vector> void add(size_t count,...) // 阅读全文
摘要:
使用面积来判定region是否为空。不要用cout_obj,为空也是1。 #include<HalconCpp.h> using namespace HalconCpp; int main() { HObject img,region; HTuple area; GenImageConst(&img 阅读全文
摘要:
线程传参,值传递和单独的&传递,线程都会保留一份副本,不会对函数外的值造成影响。外边的值释放了,也不影响线程函数里的值。有种普通函数值传递的感觉,里外互不相干。 指针传递,& + std::ref 组合,才是传真身,不会有副本。等效普通函数的指针传递和引用传递了。此时需要注意生命周期内的内存值的改变 阅读全文
摘要:
join的目的是线程如何结束(子线程结束,主线程再结束),如果在join之前发生了异常,函数将终止,join不会被调用。为了避免这种情况发生,建议写在析构函数中。 阅读全文
摘要:
容易理解的,简单一点的线程池系列博客 C++多线程编程(九)——总结篇 - 掘金 (juejin.cn) 以下内容是不容易理解的,使用了很多c++11新特性的线程池 1、避免频繁创建、销毁线程,实现复用。思路如下: 2、线程函数多种多样,如何封装成统一的函数类型 void( ) 第一次封装我们使用b 阅读全文
摘要:
CPU 的运行原理 控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后 CPU 将这个地址里的指令读到指令寄存器进行译码。对于执行指令过程中所需要用到的数据,会将数据地址也送到地址总线,然后 CPU 把数据读到 CPU 的内部存储单元(就是内部寄 阅读全文
摘要:
阈值分割,得到二值图,高于阈值的为255 __m256i 阈值= _mm256_set1_epi8(阈值); __m256i 图像1= _mm256_subs_epu8(原图像, 阈值); //低于阈值的都为0 __m256i 二值图 = _mm256_cmpeq_epi8(图像1, _mm256_ 阅读全文