自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 收藏
  • 关注

原创 基于MFC按钮逻辑

if (state == GigeState::ARV_OPENED || state == GigeState::ARV_VIDEO)// GigeState::ARV_OPENED(设备已打开)或者 GigeState::ARV_VIDEO(设备正在进行视频操作)时,将视频按钮设置为可点击状态,即启用该按钮。

2025-03-28 13:10:16 407

原创 关于gige与MFC的界面交互

CDlgAddGige搜寻此函数定义跳转至DlgAddGige.h这个头文件(个人理解是关于界面交互的头文件)Resource.h文件存储的是窗口交互界面框架的ID,要在框架中模块选择对应的ID实现绑定交互。2.需要在所框架接口处的ID选择这个,这个文件ID在Resource.h中 后面的数字唯一。1.IDD = IDD_DLG_ADDGIGEa是交互界面的框架接口。就是三种,源函数全局的头文件,resource,源函数dlg。通过IDD_DLG_PARAM将二者关联起来。3.会在.rc文件中自动生成。

2025-03-28 10:16:24 422

原创 关于gige协议通信中CDlgAddGige的头文件解析

/ DDX/DDV 支持是一个虚函数,通常在对话框类中被重写。它的主要作用是实现对话框控件与类的成员变量之间的数据交换(DDX,Dialog Data Exchange)以及数据验证(DDV,Dialog Data Validation)//class CDlgAddGige : public CDialogEx创建名字为 CDlgAddGige的类继承 CDialogEx的方式,CDialogEx是MFC中的一个对话框架。// 对话框数据,将对话框类与资源编辑器中的对话框模板(

2025-03-27 13:53:25 875

原创 pytorch中的基础数据集

则会将数据样本在返回前固定到 CUDA 页锁定内存中,这样可以加快数据从 CPU 到 GPU 的传输速度,适用于使用 GPU 进行训练的场景,默认值为。,则在每个 epoch 结束后,工作进程不会被销毁,而是保持存活状态,这样可以减少进程创建和销毁的开销,提高数据加载效率,默认值为。在多进程数据加载时,工作进程会预先加载一定数量的样本,以提高数据加载的连续性。,则在每个 epoch 开始时打乱数据集的顺序,有助于模型更好地学习数据的分布,提高模型的泛化能力,默认值为。:指定多进程的上下文,可以是。

2025-03-13 09:39:49 361

原创 对象检测部署TensorRT

之前报却晒10.6的cuda文件,我用11.6改成了10.6没报错也生成了engine文件,先用着有问题后面再说。rtexec.exe --onnx=drone_best.onnx --saveEngine=drone_best.engine --fp1690(半精度)yolo8可以转,但是非所有模型都可以转,有些二阶段无法转。我将tensorrt中的lib目录下的.dll都复制tensorr的bin下(如果正常生成不用)下载了这个DLL文件放到cuda文件里就可以正常生成了。之后缺少这个DLL文件;

2025-03-12 16:11:51 378

原创 实例分割操作

print("仍然无法导入 non_maximum_suppression 模块,请检查路径是否正确。print(f"模型加载失败: {e},请检查模型文件路径和名称是否正确。和之前是一样的但是要注意的是要调整自定义图像的size来符合onnx,避免出现报错的问题。和之前是一样的但是要注意的是要调整自定义图像的size来符合onnx,避免出现报错的问题。# 调整 num_boxes_index 的值,使 m1 的列数为 32。print("未找到类别文件,请检查文件路径是否正确。

2025-03-12 13:03:57 405

原创 Yolov8模型推理部署

model = core.read_model(model="C:/python/yolov8/yolov8n.onnx") # 请根据实际情况修改为模型的绝对路径。output_folder = "C:/python/yolov8/2/" # 请根据实际情况修改为你要保存的文件夹路径。print("无法打开视频文件,请检查文件路径是否正确。print("可用设备:", available_devices)print(f"推理过程中出现错误: {e}")print(f"模型加载或编译失败: {e}")

2025-03-12 11:21:58 587

原创 OPenVINO2022.1环境搭建

直接最后一步,但是作者下载速度太慢选择镜像。

2025-03-12 09:51:53 187

原创 TensorRT环境搭建

版本 TensorRT 8.4 GA Update 2 for x86_64 Architecture。同样的操作将lib,include,bin文件复制粘贴到cuda中。lib,include,bin文件复制粘贴到cuda中相同的位置。(与 TensorRT 8.4/8.5 兼容性较好)首先确认自己的CUDA版本,作者版本是11.6。2.将下载好的cuDNN解压,将里面的。3.下载TensorRT。

2025-03-11 17:56:05 135

原创 yolov8自定义实例分割

print(f"JSON 文件 {json_file} 中的 shapes 列表为空,生成的 TXT 文件将为空。print(f"已处理图像: {img_name},生成标签文件: {data_label_text_f}")JSON 文件: {json_file}")print(f"JSON 文件 {json_file} 缺少必要的图像信息,跳过处理。print(f"跳过非 JSON 文件: {json_file}")print(f"正在处理 JSON 文件: {json_file}")

2025-03-11 15:32:30 516

原创 模型推理测试与导出

训练的模型,cd到my_yolov8_train_demo文件中,里面有刚刚训练好的best.pt,之后。之后我们试一下将他(best.pt)转换位onnx格式。我们尝试进行onnx模式推理。这里有一个过滤低率值的方法。

2025-03-11 10:00:39 186

原创 数据集构建与训练前准备

训练数据集目录结构与格式作者笨蛋学法,先将其公式化,后面逐步自己进行修改,读者觉得看不懂可以理解成,由结果去推过程,首先建立一个名字为datasets的文件,要求与my_yolov8_train_demo在同一层目录,datasets的目录用于存储几个比较关键的文件,为了便于理解先引申出一个指令用与训练模型,其中dataset.yaml文件包含了几个重要信息根据这两条信息我们可以知道我们需要的三个文件,分别是其中images的下面有两个子文件分别是train和valid。

2025-03-10 23:06:15 695

原创 labelImg使用方法

后点击Save会默认与图片相同路径的文件夹。我们来查找一下XML,看一下这个数据格式。在tool中找到labelImg打开。W快捷键选择目标,选择目标名称。最后选择一个不一样的。

2025-03-10 17:38:18 162

原创 Visual stdio2022 opencv cude pytroch与yolov8/可视化工具的环境搭建,不搞VIP,我也要当雷锋

pycharm下载解压软件,这里推荐bandi下载python解释器,这里有两种,一种官方下载但是太慢了,这里作者选择国内的python下载之后安装,要注意path,我的版本是3.10.10,因为后面要和pycharm cude等适配这个版本测试过可以跑起来,按照好后cmd测试一下接下来下载opencv480,同样官网下载太慢,作者选择并找到了雷锋下载好opencv后进行环境的搭建配置这三个vs2022中的配置,之后配置系统变量之后可以简单写些读取图像的程序测试一下// 读取彩色图像作为模板。

2025-03-10 15:55:33 1121

原创 逻辑回归机器学习

criterion = torch.nn.BCELoss()在二分类问题中,我们希望模型输出一个概率值,表示输入样本属于正类的可能性。如果模型预测的概率值与真实标签越接近,那么二元交叉熵损失就越小;x = np.linspace(-5,5,20, dtype=np.float32)//-5,5之间随机生成20个数。y = np.random.normal(_b,0.005)//在此基础上加上0.05的噪声来获得y。_b=1/(1 + np.exp(-x))//通过变换得到_b。print("标签y",y)

2025-03-09 22:59:54 799

原创 线性回归机器学习

• 功能实现:它用于实现全连接层,即线性变换。该类能够对输入数据进行线性变换,计算公式为y = xA^T + b,其中x是输入数据,A是权重矩阵,b是偏置向量,y是输出数据。在构建神经网络时,通过实例化torch.nn.Linear类来创建线性层,定义输入特征维度和输出特征维度,就能对输入数据进行线性变换操作。• 参数管理:torch.nn.Linear类在实例化时会自动创建和管理权重和偏置参数。这些参数是可学习的,在神经网络训练过程中,会根据损失函数的反向传播来更新这些参数,以优化模型的性能。

2025-03-09 20:45:12 869

原创 python/Numpy基础操作

pytorch算子操作。

2025-03-07 11:35:23 449

原创 halcon学习笔记1

这里作者的个人理解是1号区域主要是可以观察到读取的图像以及后续对图像进行何种操作,2的算子类似于Opencv中的API,可以在上面进行参数的调整,例如read_Image()其中里面的参数可以在算子界面看到,填写完需要的参数后会在4中出现,如图。很明显蓝色的区域就是衣服的区域,他的显著特征就是面积最大,我们可以调用select_shape算子对他进行最大面积的提取。相比Opencv要方便很多,我们可以尝试做一些简单的图形操作,例如将BGR换成灰度图像,再将其进行二值化操作。

2025-03-03 23:11:56 225

原创 机械视觉组成模块-相机选型

相机是一种将现场的影响转化为数字信号或模拟信号的工具。按照不同的芯片类型划分:CCD摄像机/CMOS摄像机。

2025-03-03 15:21:59 354

原创 机械视觉组成模块-光源镜头选型

4.变焦:改变镜头的焦距--改变成像大小(人眼所不具备功能)焦距越小,视角越大,拍摄距离越近。2,广角镜头:视角90度以上,适用于拍摄距离近且范围大的景物,又能夸大前景表现强烈远近感即透视。系统能观察到的物体的物理尺寸范围,也就是CCD芯片上所成图像最大时对应的物体的大小。1,标准镜头:视角约50度,也是人单眼在头和眼不转动的情况下所能看到的视角。3,长焦距镜头:突出距离远的景物,景深小容易使背景模糊主体突出。1.成像:没有镜头,摄像机不能采集到任何图像,输出被噪声淹没。4,微距镜头:极近距离的微距摄影。

2025-03-03 15:01:17 156

原创 HOG检测

/可以得到输入图像result的HOG特征描述符,并存储在desc中,后续可以用于训练分类器(如SVM)或进行目标检测等任务。//glob 函数的作用是根据给定的路径模式查找所有匹配的文件和目录。//负样本在整个pos_num的后面。//存储正负样本的文件路径。首先将目标图像进行预处理。svm生成相关xml文件。

2025-02-06 16:47:54 706

原创 实际操作 检测缺陷刀片

运行后发现出现了误检测,因为刀片宽度不统一,所以容易识别错误,所以需要在已经检测到的关键框架进行进一步的筛选。前期的图像处理完毕,后面的思路要对模板图像以及后面的图像进行对比生成mask来确认具有缺陷的刀片。tpl为刚才观察到的形态良好的工件,将其提取后与其他工件进行对比做差,对Mask进行开操作后。}根据不同的素材来做筛选,例如此类型就是以图形的行和面积来作为筛选条件,找到目标图像的缺陷位置,首先思路为对图像进行预处理,灰度-二值化-针对图像进行轮廓分析。首先对筛选出来的图像进行进一步处理。

2025-02-04 22:27:43 371

原创 关于DNN检测中替换caff用Tensorflow的注意事项

的model的位置和CAFF是相反的,Mat blobImage = blobFromImage(frame, 1.0,Scalar(127.5, 127.5, 127.5), true, false);

2025-02-01 19:28:05 595

原创 落地 dnn对象检测

curr_row++使指针curr_row移动到下一个元素位置,准备读取下一个信息,int image_id = (int)(*curr_row++) 的执行顺序是先取 curr_row 所指向的内存地址中的值,将其转换为 int 类型后赋值给 image_id,然后再将 curr_row 指针向后移动一位,指向下一个元素的内存地址。• 原理:forward函数根据模型的结构和权重,将输入数据(即之前设置的blobImage)从输入层依次经过各个中间层的计算,最终得到输出层的数据。

2025-02-01 17:01:17 1081

原创 落地 检测工件有无标码

● cv::DescriptorMatcher::create("BruteForce - Hamming"):cv::DescriptorMatcher是OpenCV中用于进行特征描述符匹配的基类。● cv::Ptr<cv::DescriptorMatcher>:这是定义一个智能指针,用于管理cv::DescriptorMatcher类型的对象。std::cout << "标签: " << (OK == true) << std::endl;--对图像进行预处理。

2025-02-01 00:24:59 538

原创 落地基于特征的图像拼接

/目的将函数左面图像从1渐变到0以便完成图像的融合函数linspace(mask1, 1, 0, left.cols, mask)中,在mask1矩阵上,从值1开始,以一定的步长递减到0,递减的步数由left.cols指定,mask可能是用于辅助计算或存储中间结果等。这是因为 multiply 函数要求参与乘法运算的两个矩阵数据类型一致,而 mask1 是 CV_32FC1 类型,扩展后的 m1 也是 CV_32F 类型,所以需要将 panorama_01 转换为相同的数据类型。//线性渐变值的矩阵。

2025-01-29 13:02:10 805

原创 落地 基于特征的对象检测

中,queryIdx 用于从 kypts_book(可视为查询图像的特征点集)中取点,trainIdx 用于从 kypts_book_on_desk(可视为训练图像的特征点集)中取点,分别获取在不同图像中相互匹配的特征点坐标。比如在进行图像匹配时,将一幅图像设为查询图像,要在另一幅图像中找与它匹配的部分,queryIdx 就用来索引查询图像中的特征点,queryIdx].pt 就是通过该索引获取到的查询图像中特征点的坐标。这些点将通过计算得到的单应性矩阵映射到目标图像中的对应位置。接下来处理锁定目标图片。

2025-01-27 17:46:21 447

原创 落地 轮廓匹配

• 返回值:返回一个 cv::Mat 类型的单应性矩阵 h,它是一个 3x3 的矩阵,用于后续的透视变换。个人理解为将一幅不规则的图形,通过最轮廓发现,最大轮廓匹配来确定图像的位置,再通过pt将不规则的图像放在规定的矩形里面,在通过透视变换将不规则的图形放进规则的图像中。这两行代码在图像变换处理中是非常关键的步骤,先计算单应性矩阵,再基于此矩阵对图像进行透视变换,从而实现将源图像的特定区域映射到目标图像的指定区域。• image:输入的源图像,是一个 cv::Mat 类型的对象。

2025-01-27 13:49:57 368

原创 落地 暴力匹配

4. Mat():这是一个空的掩码矩阵。2. detectAndCompute:这是 ORB 类的一个成员函数,它具有双重功能,既可以检测图像中的特征点(关键点),又能计算这些特征点对应的描述符。3. book:这是一个 Mat 类型的变量,代表要进行特征检测和描述符计算的输入图像,在这里它存储了从文件中读取的名为 book.jpg 的图像数据。通过执行这行代码,ORB 算法会在 book 图像中找到特征点,并计算出这些特征点的描述符,为后续的图像匹配、目标识别等计算机视觉任务提供基础数据。

2025-01-26 15:46:08 580

原创 落地 ORB角点检测与sift检测

ORB角点检测ORB角点检测可以说ORB是由FAST、灰度质心和BRIEF等技术组合优化形成的,不过更准确地说,ORB是在FAST特征检测算法基础上,结合了灰度质心确定方向以及改进后的BRIEF描述子等技术形成的,以下是具体分析:• FAST特征检测:ORB算法首先采用FAST算法来检测图像中的特征点。FAST算法通过判断以某个像素点为中心的圆周上的像素点灰度值与该中心像素点灰度值的关系,快速地筛选出可能的特征点,具有速度快的优点。

2025-01-25 21:49:56 579

原创 落地 角点检测

角点检测用了流光检测法的方法中的。

2025-01-25 15:05:08 300

原创 加强版第二十二章KTL光流法

在计算光流时,先从金字塔的顶层(尺寸最小的图像)开始计算,得到一个大概的光流估计,然后把这个估计作为下一层(尺寸更大的图像)计算的初始值,逐步细化光流估计,这样可以处理较大位移的情况。在函数执行后,它会被更新为计算得到的当前帧中对应的特征点坐标。• 这是一个迭代终止条件。• 这个误差可以用于评估光流计算的准确性,或者用于筛选出误差较大的特征点,例如,在后续处理中,可以舍弃误差超过一定阈值的特征点。• 例如,在处理视频流时,prevImg是视频中的第n - 1帧的灰度图像,nextImg是第n帧的灰度图像。

2025-01-21 10:38:15 818

原创 加强版第二十一章背景分析

if (!Mat frame;if (!ret) break;break;waitKey(0);// 形态学操作t++) {continue;

2025-01-02 15:22:02 924

原创 加强版第二十章基于颜色的对象跟踪

• 当处理图像时,函数会逐个检查图像中的像素。以彩色图像为例,对于每个像素的RGB值,它会检查红色通道的值是否在lowerb和upperb中红色通道指定的范围内,同时绿色和蓝色通道的值也要满足相应的范围要求。可以将lowerb设置为一个较低的红色值(如(0, 0, 100),假设这里红色通道的值相对较大来表示红色调),upperb设置为一个较高的红色值(如(100, 100, 255)),然后使用cv2.inRange函数处理图像,就可以得到一个二值图像,其中白色部分表示红色调区域,黑色部分表示其他区域。

2025-01-02 13:34:40 252

原创 加强版第十九章图像角点检测

这个函数会基于给定的参数,对输入的图像进行角点检测分析,通过一些数学计算(比如基于图像局部区域的特征值等)来判断哪些像素位置很可能是角点,然后把符合条件的角点坐标存到输出的 corners 向量中,以便后续进一步利用这些角点信息,比如在图像上标记角点或者基于角点做图像匹配等操作。• ksize:Sobel算子的孔径大小,用于计算图像的梯度,其值一般为奇数,像1、3、5等,这个参数决定了梯度计算的精度和对图像细节的敏感度,较小的ksize对图像细节响应更好,较大的可能更注重整体趋势。

2025-01-02 10:30:00 503

原创 加强版第十八章直方图反向投影

对于HSV图像的不同通道(如色调范围是 0 到 180,饱和度是 0 到 255 等),会组合各通道的范围数组来传入这个参数,告诉函数每个通道的取值区间,方便准确统计各区间内的像素数量来构建直方图。是一个布尔类型的参数,默认值为 true,表示直方图是均匀分布的(uniform),也就是各bin的区间大小是相等的情况,大多数常见的直方图计算场景都是均匀分布的。例如,要计算一张图像的直方图,就传入该图像对应的 Mat 对象的地址(像 &image 这种形式,image 为 Mat 类型的图像变量)。

2024-12-31 09:17:52 572

原创 加强版第十七章空间色彩转换

if (!if (!ret)break;break;waitKey(0);if (!if (!ret)break;break;waitKey(0);

2024-12-27 14:29:00 692

原创 加强版十六章视频读写

VideoCapture capture(0)用来打开系统摄像头。读取视频文件或摄像头,将读取视频的保存。

2024-12-27 11:02:54 719

原创 加强版第十五章 检测点云

● Scalar(0, 255, 0) 是指定圆形的颜色,这里用 Scalar 类型来表示,参数 (0, 255, 0) 通常意味着绿色(在OpenCV里颜色通道顺序一般是 BGR,即蓝色、绿色、红色分量,这里绿色分量为 255,其他为 0,所以是绿色)。● 后面的 2 可能表示圆形轮廓的线条粗细(具体含义要参照对应函数的详细文档),8 和 0 一般也是和绘制相关的一些参数(比如 8 可能涉及绘制的线条类型等,0 可能表示是闭合图形之类的默认设置,同样要依据具体库函数定义来准确判断)。

2024-12-24 10:56:22 855

原创 加强版第十四章顶帽与黑帽

顶帽与黑帽作用提取图像中微小有用信息块(二值图像分析工业缺陷品检测应用)

2024-12-09 17:32:12 346

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除