- 博客(656)
- 资源 (3)
- 收藏
- 关注
原创 【C#】 高效日志打印 Logger代码实现【串口通信日志,服务器日志,异常记录,系统状态监控,程序崩溃 日志也不会丢失】
1 .使用 StreamWriter 并开启 AutoFlush = true:避免频繁打开/关闭文件,提高写入效率。每次写入后,StreamWriter 自动刷新,但避免了 每次事件调用都重新创建 StreamWriter``。4.日志按日期分类存储:每天生成一个新的日志文件,避免单个文件过大影响性能。,对于事件可以理解为线程,这里同时启动两个事件,就相当于开了两个线程。或 后台线程 处理日志写入,减少 事件处理函数 受到的影响。,并在单独的后台线程中写入日志,减少对主线程的影响。
2025-03-22 20:12:12
778
原创 【OpenCV C++】 compare函数解释,及 典型应用场景
最终输出像素值为 255(这3个通道计算结果是 (B || G || R) 的关系,即 255 || 0 || 255最终结果是255)。若 src1 和 src2 数据类型不同(如 CV_8U 和 CV_32F),OpenCV 会自动转换为更高精度的数据类型后再比较。输出矩阵 dst 始终为 二值化单通道图像(CV_8UC1)。img1 第一个像素值:(B=120, G=80, R=200)Blue通道:120 = 100 → 满足条件。Red通道:200 = 180 → 满足条件。
2025-03-19 21:27:33
40
原创 【OpenCV C++】如何快速 高效的计算出图像中大于值的像素个数? 遍历比较吗? No,效率太低!那么如何更高效?
一幅图像的目标区域ROI尺寸为60*35的灰度图,快速计算出大于backVal的像素个数,其中backVal=200;(注意这里只统计ROI区域的像素个数,一般来说只对目标区域处理,便于提高效率)思路1:是遍历每个像素,然后比较是否大于200,统计次数。但这样做效率可能不高,尤其是当图像较大时。不过这里图像是60x35,不算太大,可能直接遍历也行。不过有没有更高效的方法呢?记得OpenCV有一些矩阵操作函数,可能可以利用这些函数来避免显式循环。比如,比较操作可以用cv::compare或者直接使用矩阵表
2025-03-19 21:22:15
288
原创 【OpenCV C++】compare和threshold 看起来都有二值化效果? 那么二者效率?
在OpenCV中,cv::compare()与二值化函数cv::threshold()均可实现像素值筛选,但二者实现机制和效率存在差异:1. 实现原理对比:直接对输入矩阵执行逐像素比较,生成二值结果(满足条件的为255,否则为0)。该函数仅涉及一次比较运算,无额外计算步骤。:通过指定阈值类型(如THRESH_BINARY)生成二值图像,需处理阈值判断逻辑和可能的类型转换。对于固定阈值(如THRESH_BINARY),其底层实现与cv::compare()类似,但函数调用时需解析更多参数,存在额外分支
2025-03-19 21:19:46
29
原创 【C++】严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息 错误 C2572 “saveImage2”: 重定义默认参数 : 参数 1 cv_gStreamer E:\projects\C0
头文件应该怎样定义?注意,在 C++ 头文件 (.h) 中定义 saveImage2 函数时,默认参数只能在声明时提供,不能在实现时重复定义默认参数,否则会导致 C2572 错误。如果头文件而函数是现实,还写默认参数,那么就会报错严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息。
2025-03-10 21:49:39
195
原创 【OpenCV C++】存图,如何以时间命名,“年月日-时分秒“产生唯一的文件名呢?“年月日-时分秒-毫秒“ 自动检查存储目录,若不存在自动创建存图
头文件应该怎样定义?注意,在 C++ 头文件 (.h) 中定义 saveImage2 函数时,默认参数只能在声明时提供,不能在实现时重复定义默认参数,否则会导致 C2572 错误。如果头文件而函数是现实,还写默认参数,那么就会报错严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息。
2025-03-10 21:48:00
260
原创 【C#】 C# 配置文件读取数组:读 int[], float[], string[],bool[];读 int, float, string,bool;,错误输出,长度判定等
* 1.读取 int, float, string,bool(getInt, getFloat, getString,getBool)。* 2.读取 int, float, string 数组(getIntArray, getFloatArray, getStringArray,getBoolArray)。* 3.自动判断数组长度。* 4.bool 类型大小写不敏感(true/false、TRUE/FALSE、TrUe/FaLsE 都可正确解析)
2025-03-04 19:06:25
302
原创 【C++】 C++ 配置文件读取数组:读取 int[], float[], string[],bool[];读取 int, float, string,bool;错误输出,长度判定等
1.读取 int, float, string,bool(getInt, getFloat, getString,getBool)。 2.读取 int, float, string 数组(getIntArray, getFloatArray, getStringArray,getBoolArray)。3.自动判断数组长度。 4.bool 类型大小写不敏感(true/false、TRUE/FALSE、TrUe/FaLsE 都可正确解析)
2025-03-04 17:30:05
139
原创 【OpenCV C++】以时间命名存图,自动检查存储目录,若不存在自动创建, 按下空格、回车、Q、S自动存图
等待用户按键,按键空格,回车,Q,S任意一个,都会保存图像。
2025-02-28 15:36:13
408
原创 【OpenCV C++】图像清晰度增强:拉普拉斯锐化,SUM锐化,普通锐化
最大值:无上限,但过大的 sigma 会导致图像的细节完全丢失,并使模糊效果过于强烈。最小值:1,即 1x1 核,实际上等于没有进行模糊处理,但通常不推荐这么小的核。强烈模糊:sigma = 2.0 到 3.0(适用于需要模糊化大范围的图像)大尺寸模糊:kernel_size = 9(适用于需要强模糊效果的图像)温和模糊:sigma = 0.5 到 1.0(适用于一般的模糊效果)适度模糊:sigma = 1.0 到 2.0(适用于较强的模糊)强烈锐化:alpha = 2.0 到 5.0(适用于模糊图像)
2025-02-27 18:40:17
200
原创 Windows VS2022 + GStreamer 安装与配置教程, VS2022 + GStreamer在C++项目中二次开发调用示例 【史上最全教程】
1.包含必要的头文件2. 初始化 GStreamer// ... 其他代码 ...return 0;3. 创建管道和元素if (!source ||!filter ||!4. 将元素添加到管道并链接if (!return -1;5. 启动管道// 等待一段时间或处理其他逻辑简单示例验证if (!source ||!filter ||!if (!
2025-02-22 12:22:31
435
原创 【C#】 MesgInvoked?.Invoke(“设备连接失败“, false);和 MesgInvoked(“设备连接失败“, false);使用方法有什么区别?
Invoke(“设备连接失败”, false);和 MesgInvoked(“设备连接失败”, false);使用方法有什么区别?借助下面这个事件示例分析。
2025-02-13 10:38:58
772
原创 【USB采集卡】USB 3.0扩展板卡 和 USB 3.0图像采集卡扩展板卡 速率 区别 ?
如果你使用的是多个高分辨率相机进行数据采集,USB图像采集卡通常会提供更高的稳定性和更高的传输速率,特别是在高带宽需求下,因为它们能有效地分配带宽并优化多个数据流。而USB 3.0扩展板卡则可能会在多个设备同时工作时出现带宽瓶颈,特别是在图像分辨率较高或者需要较高帧率的情况下,数据传输效率会受到限制。因此,USB图像采集卡在高分辨率、多相机应用中通常能提供更优的性能。
2024-12-06 10:31:53
1000
原创 【C#】一个项目源码移动了位置,或者换到其他电脑上,编译报错 Files 的值“IGEF,或编译很多关联的文件找不到,解决方法
一个项目可以正常运行编译的项目,所有路径均为相对路径。移动了位置,或者换到其他电脑上,编译报错 Files 的值“IGEF,
2024-08-10 17:38:16
611
原创 【C++ C#】 C++ 和C# 的混合项目,C++ 文件中有多个 函数和变量 定义了未使用,会影响程序正常执速度吗?
一个 C++ 和C# 的混合项目,C++ 文件中有多个 函数和变量 定义了未使用,并且C#中也没有导入这些没有使用到的的函数和变量。那么这些没有使用的 函数和变量,会影响程序正常执速度吗?
2024-05-27 17:26:16
1184
原创 【C++】int& a, cv::Mat& img 作为入口参数是,使用了“&”符号,那么这个符号用什么作用? 一共有哪几种含义? 分别用于什么场景?
cv::Mat& img 作为入口参数是,使用了“&”符号,那么这个符号用什么作用?一共有哪几种含义?分别用于什么场景?在C++中,符号&有多种不同的含义,具体取决于它所处的上下文。
2024-05-16 19:07:03
436
原创 【OpenCV C++】cv::Scalar scalar = cv::mean(BarImg); 求图像均值时scalar 为啥有4个元素?
这是因为OpenCV的cv::Scalar类型设计用于处理多种类型的图像,包括那些具有4个通道的图像(如带有Alpha通道的RGBA图像)。即使图像只有3个通道(BGR),cv::Scalar对象的第四个元素也会被设置为零。在OpenCV中,当使用cv::mean函数计算图像的均值时,返回的。对于单通道的灰度图像。
2024-05-16 11:13:57
497
原创 【OpenCV C++】cvtColor将彩色图像转换为灰度图时,3个通道的灰度值是如何处理的? 三个通道是如何加权计算的?三个通道取平均得到灰度图吗?
权重(0.299、0.587、0.114)是根据人眼对不同颜色的敏感度决定的。人眼对绿色最敏感,因此绿色通道的权重最大。在OpenCV中,使用cv::cvtColor函数将。R、G、B 分别代表红色、绿色和蓝色通道的值。,3个通道的灰度值并不是简单地取平均值,而是。
2024-05-16 11:09:17
429
原创 【C++】 C++ 编写 鸡兔同笼程序
鸡兔同笼”问题是一个经典的数学问题,要求根据总头数和总腿数来计算鸡和兔的数量。假设鸡有 2 条腿,兔有 4 条腿。该程序接受总头数和总腿数,并计算鸡和兔的数量。根据这两个方程,可以解出 x 和 y 的值。
2024-05-14 20:39:08
1479
原创 【C#】C# 中 int , int64 和 long的区别,C# 中int , int64 和 long 在Win x64 和x86区别
因此,int和long之间的区别在于它们的存储大小和取值范围,而。
2024-05-11 09:04:41
3676
原创 【C#】定义一个PointF数组,怎么定义的时候初始化? PointF[] crossPtsDxDy2 = new PointF[4]并初始化4个坐标点
【代码】【C#】定义一个PointF数组,怎么定义的时候初始化?PointF[] crossPtsDxDy2 = new PointF[4]并初始化4个坐标点。
2024-04-30 12:11:33
378
原创 【C++】 switch 语句case后面可以跟 string变量吗? case后面可以怎么跟 string变量?
如果想在 switch 语句中匹配字符串,可以将字符串转换为整数或者使用其他方法来实现。一种常见的方法是使用 std::unordered_map 或 std::map 来将字符串映射到整数,然后在 switch 语句中使用整数进行匹配。在上述示例中,我们将字符串映射到整数,然后在 switch 语句中使用整数进行匹配。在 C++ 中,case 语句通常是用于 switch 语句中,用来匹配整数或枚举类型的常量。在标准的 C++ 中,,因为 case 语句。不能直接跟字符串变量。
2024-03-27 20:02:35
1519
原创 [OpenCV C++] matchTemplate 模板匹配,设置阈值来筛选匹配结果,判断匹配是否成功
为了解决这个问题,可以通过设置阈值来筛选匹配结果,只有当匹配度高于某个阈值时,才认为匹配成功。如果匹配度低于阈值,将其视为匹配失败,并给出相应的提示。在 OpenCV 中,matchTemplate 函数是用于模板匹配的,它会在图像中寻找与给定模板最相似的区域。但是,即使没有正确匹配到目标,matchTemplate 函数也会返回一个结果,这会导致错误出现。
2024-03-27 19:53:37
796
转载 使用visual studio 2022 时,代码下划线报拼音错误,显示不是单词
使用visual studio 2022 时,代码下划线报拼音错误,显示不是单词,有烦人的波浪下划线;
2024-03-19 08:16:15
501
原创 【OpenCV C++】找到图像中最亮的区域中心,求该区域ROI的平均亮度
【代码】【OpenCV C++】找到图像中最亮的区域中心,求该区域的平均亮度。
2024-03-18 08:48:00
568
原创 【06】VS添加筛选器 文件夹,对不同的代码文件分类管理
首先说在IDE中为我们的文件分类组织,如下图所示:我把不同功能的代码和文件放在不同的Filter下面,如何添加这样的Filter呢?这样就可以添加筛选器了,默认情况下VS为我们创建三个筛选器:头文件、源文件和资源文件,实际上我们可以再增加很多。这样区分开的好处就是各个功能的代码被分开了,在文件很多的情况下不会造成混乱。如TextSearcher,它的搜索算法、软件控制逻辑、自定义控件、GUI模块、线程化操作都是分开的,这样我可以很容易找到我想找的文件,而且还可以检视自己的模块划分是否合理等等。
2024-03-06 11:36:48
3443
转载 【05】vs中新建文件/筛选器/文件夹
当我的项目中要用到很多的头文件和.cpp文件 (这些文件是提前写好的,现在要添加到当前项目中使用,如果直接添加到“头文件”、"源文件"中太多太乱了)创建筛选器后,工程目录下 *.vcxproj.filters 文件用来记录筛选器,此文件不能删除,否则筛选器将消失.创建筛选器后,工程目录下 *.vcxproj.filters 文件用来记录筛选器,此文件不能删除,否则筛选器将消失.文件,右键添加–现有项–在磁盘文件中找到要添加的.h、.cpp添加;选中一个项目或文件夹目–>右键–>添加–>新建筛选器;
2024-03-06 10:50:04
1297
1
原创 【OpenCV C++】将float数据和字符串一起打印在iamge上 ,stringstream数值转字符串 VS sprintf_s 数值转字符串
现在,我们在其他的 .cpp 文件中可以包含 image_utils.h 头文件,并调用 drawTextWithFloat 函数了。我们在头文件 image_utils.h 中声明函数,然后在 .cpp 文件 image_utils.cpp 中定义函数实现,在这个示例中,我们在 main 函数中调用了 drawTextWithFloat 函数,并且省略了所有参数的默认值。sprintf_s 函数的安全性可能稍逊于 stringstream,因为它需要手动控制缓冲区的大小,防止溢出。性能方面,通常情况下,
2024-03-05 14:45:44
362
原创 【OpenCV C++】Mat img.total() 和img.cols * img.rows 意思一样吗?二者完全相等吗?
为了便于理解,先来梳理一下 Mat img的属性data:数据存储的起始地址 (uchar*类型);dims:矩阵维度。如 3 * 4 的矩阵为 2 维, 3 * 4 * 5 的为3维;channels():通道数量,矩阵中表示一个元素所需要的值的个数。例:3 * 4矩阵中共有12个元素,如果每个元素需要3个值表示,那么此矩阵的通道数为3。常见的是一张彩色图片有B蓝、G绿、R红3个通道;depth():深度,即表示单通道中元素值的位数(bits)。
2024-02-27 10:38:03
531
原创 【OpenCV C++】Mat img.total()*img.elemSize() 和img.cols * img.rows * img.channels()意思一样吗?二者完全相等吗?
为了便于理解,先来梳理一下 Mat img的属性data:数据存储的起始地址 (uchar*类型);dims:矩阵维度。如 3 * 4 的矩阵为 2 维, 3 * 4 * 5 的为3维;channels():通道数量,矩阵中表示一个元素所需要的值的个数。例:3 * 4矩阵中共有12个元素,如果每个元素需要3个值表示,那么此矩阵的通道数为3。常见的是一张彩色图片有B蓝、G绿、R红3个通道;depth():深度,即表示单通道中元素值的位数(bits)。
2024-02-27 10:30:25
432
原创 c++ vector 赋值 只能用push_back()赋值 ?使用下标赋值出错,不能使用标赋值吗?
res中将包含8个元素,每个元素进行缺省的值初始化,对于int,也就是被赋值为0,因此res被初始化为包含8个0。移动赋值通过std::move函数实现,可以在不复制元素的情况下将一个vector转移到另一个vector中。此时vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,迭代器赋值方式使用assign函数实现,可以实现指定范围的元素插入、赋值等操作。
2024-01-24 11:23:27
2469
原创 工业相机——靶面尺寸、像元尺寸、分辨率 、传感器尺寸
由Sensor对角线长度表示,单位英寸,这里的1英寸=16mm。——靶面尺寸为宽12.7mm*高9.6mm,对角线16mm。——靶面尺寸为宽8.8mm*高6.6mm,对角线11mm。——靶面尺寸为宽7.2mm*高5.4mm,对角线9mm。——靶面尺寸为宽6.4mm*高4.8mm,对角线8mm。——靶面尺寸为宽4.8mm*高3.6mm,对角线6mm。——靶面尺寸为宽3.2mm*高2.4mm,对角线4mm。——靶面尺寸为宽14*高10.5mm,对角线17mm。
2024-01-06 12:04:18
7349
原创 工业相机——输出图像格式 RAW、RGB、YUV
CMOS图像传感器输出的原始图像格式是RAW。RAW图像就是CMOS图像感应器将捕捉到的光源信号转化为数字信号的原始数据。RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些原数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。RGB565,每个像素用16位表示,RGB分量分别使用5位、6位、5位(常用也就是上说的RGB)。RGB555,每个像素用16
2024-01-06 11:50:17
2492
转载 工业相机——帧率和曝光(快门)之间的关系
工业相机曝光:曝光是图像传感器进行感光的一个过程,相机曝光时间,也就是快门速度,曝光即曝光时间控制,控制感光元件上总的光通量。曝光越大,光通量越大。较长的曝光时间允许更多的光线进入传感器,产生更明亮的图像,但如果相机或场景中的物体在移动,也可能引入运动模糊或图像噪音。注意:这种计算方式是基于最基础的数学公式来计算的,可以作为参考,工业相机实际的帧率涉及的因素较多,一般以实际测试结果为准。工业相机的主要参数包括:分辨率、帧率、像素、像元尺寸、光谱响应特性等,本文主要介绍工业相机的帧率和它的曝光之间的关系。
2023-12-15 14:48:39
1833
转载 VS选择Visual C++中的控制台项目和空项目、Windows桌面应用程序三者之间有什么区别?
这种项目类型是一个空白的项目模板,没有预定义的代码或配置。开发者可以根据自己的需求自行添加源代码文件、资源文件等,适用于从头开始构建自定义应用程序的场景。这种项目类型适用于命令行应用程序的开发。它提供一个命令行界面,可以在控制台中进行输入和输出操作,通常用于简单的控制台程序,如计算器、文件处理等。这种项目类型适用于开发Windows桌面应用程序,
2023-11-24 21:14:37
1992
1
转载 【02】OpenCv C#——OpenCvSharp编程入门与矩阵Mat的基础知识
C#,OpenCv开发指南(02)——OpenCvSharp编程入门与矩阵Mat的基础知识1.4 属性和常量方法的解释1.4.7 Depth()每一个像素中每一个通道的精度。在Opencv中,Mat.Depth()得到的是一个 0~6 的数字,分别代表不同的位数,对应关系如下:其中U是unsigned的意思,S表示signed,也就是有符号和无符号数。1.4.9 Step() and Step1()1.5 Mat Type 的定义2.1 从数据(数组)创建 Mat其中显示 矩阵 的
2023-11-20 18:54:32
2100
转载 opencv中Mat数据类型中data、size、depth、channels、elemsize、rows、cols、step等属性内涵
用来度量每一个像素中每一个通道的精度,但它本身与图像的通道数无关!elemSize 表示每个元素的大小(单位字节),每个元素可能有多个通道,示例中,每个元素有三个通道,而每个通道类型为CV_16U,算3个通道的总数, 2*3=6。表示的是一个矩阵中的每个元素分别有几个值,如一个4*3的矩阵,有12个元素,每个元素如果有三个值,则此矩阵有三个通道。Mat矩阵的维度,若Mat是一个二维矩阵,则dims=2,三维则dims=3,大多数情况下处理的都是二维矩阵,是一个平面上的矩阵。Mat矩阵元素拥有的通道数。
2023-11-20 13:53:18
2343
C# 配置文件 读取数组:读取 int, float, string,bool;读 int数组, float数组, string数组;读取数组,错误输出,长度判定等
2025-03-04
C++ 配置文件读取数组:读 int数组, float数组, string数组,bool数组;读取 int, float, string,bool;读取数组,错误输出,长度判定等
2025-03-04
项目编译编译文件清理工具clean.bat,减少整个项目文件占用空间
2024-08-10
VS2022 VC运行库-适用于Visual Studio 2015、2017、2019 和 2022
2024-01-31
C++面试宝典完整版最最最新-C++面试八股文-优秀学长学姐所写
2023-12-09
张正友相机标定-棋盘格图像下载 10 张
2023-11-18
MFC 文件对话框-打开文件-保存文件
2023-10-07
MFC 加法计算器 + 向导对话框+非模态对话框 完整工程演示代码下载
2023-10-07
MFC 加法计算器 + 模态对话框 完整工程代码下载
2023-10-07
MFC 加法计算器+属性页对话框+非模态对话框 完整代码下载
2023-10-06
MFC 加法计算器 + 非模态对话框 完整工程演示代码下载
2023-10-06
MFC 字体对话框 完整工程演示代码下载 MFC-Font-Example
2023-10-06
MFC 颜色对话框 完整工程演示代码下载 MFC-Color-Example
2023-10-06
MFC + VS2019 加法计算器+属性页对话框+消息对话框 完整工程代码
2023-10-06
GIF高清无水印录制软件
2023-09-27
深度学习三维重建 笔记总结 问题总结 MVSNet系列最新顶刊 总结-Word版下载 53页
2023-09-15
三维重建-曲面重建-论文
2023-09-02
VSCode项目工程调试debug 教程 笔记
2023-09-02
传统三维重建和深度学习三维重建 MVS笔记总结、问题总结
2023-09-02
OpenMVS注释+重建结果+运行常见问题+相关理论+传统多视图三维重建 MVS论文 集合(稠密重建、曲面重建、网格优化、纹理贴
2023-09-02
深度学习的三维重建 最具代表性的论文+源码+解析+译文+批注 整理集合 下载
2023-09-02
基于深度学习的三维重建从入门实战教程 原理讲解 源码解析 实操教程课件下载
2023-09-02
三维重建 视觉几何原理讲解 OpenMVS 讲解
2023-08-29
OpenMVS:制作自己的数据集 重建 所有文件(images,scene.mvs文件,稠密重建,曲面重建、网格优化,贴图结果
2023-08-28
OpenMVS :用 colmap制作自己的数据集 文件下载 sparse,scene.mvs
2023-08-27
PatchmatchNet: colmap制作自己的数据集文件下载
2023-08-27
MVSNet-pytorch版 源码 MVSNet-pytorch-master
2023-08-27
MVSNet 重建dtu数据集 scan23重建效果文件 运行文件下载
2023-08-27
MVSNet训练好的模型Pretrained models(dtu ,eth3d,blendedmvs)
2023-08-27
MVSNet (pytorch版) 代码注释版 下载 (注释非常详细,代码结构有所调整,使用起来更方便)
2023-08-27
最新MVSNet下载(ADR-MVSNet、DRI-MVSNet 、HighRes-MVSNet-、EPP-MVSNet)
2023-08-27
三维重建-SFM(合集)
2023-08-27
MVS多视图三维重建-传统深度图的MVS(合集)
2023-08-27
MVS多视图三维重建-传统体素(集合)
2023-08-27
MVS多视图三维重建 -基于体素的学习方法(合集)
2023-08-27
MVS多视图三维重建-基于学习的立体匹配(合集)
2023-08-27
MVS多视图三维重建-可变形多边形网格(基于表面演化)(合集)
2023-08-27
MVS多视图三维重建-深度图融合滤波方法(合集)
2023-08-27
MVS多视图三维重建 综述(合集)
2023-08-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人