自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 YOLOV5训练自定义数据集(PyCharm超详细版)

文章目录环境准备一、制作自己的数据集1.标注图片2.分配训练数据集和测试集二、配置文件1.配置数据集的配置文件2.配置模型文件3.下载权重文件三、训练模型四、推理模型环境准备克隆YoLov5工程代码,仓库地址:https://github.com/ultralytics/yolov5git克隆可能会失败,所以直接点击DownLoad Zip下载。zip文件解压后,通过cmd终端,切换到requirements.txt路径,通过pip install -r requirements.txt命令安装.

2021-10-30 11:38:52 7366 1

原创 Pytorch安装及环境配置详细教程(CUDA版本)

Pytorch(cuda版本)安装,踩坑总结,亲测有效

2023-02-01 22:06:50 8754 2

原创 [C++11]explicit关键字的作用

explicit关键字用来修饰构造函数,防止其被隐式转换。先来看看隐式类型转换是怎么发生的class Cirle{public: Cirle(double f) {radius = f;}private: double radius;};Cirle c1 = 20; //隐式调用其构造函数,成功我们定义了一个带有一个参数的Circle类, 当定义一个Circle对象, 使用值操作符=赋值时,隐式调用了构造函数, 使得程序能够编译通过。这或许可以带来便利, 而有时却会带来

2022-09-03 10:25:15 490

原创 [c++11] using用法

为什么要引入usingusing和typedef的作用都是为了,定义类型别名。既然有typedef了,为什么还要引入using呢?答案:为了弥补typedef的不足。using 的别名语法也覆盖了 typedef 的全部功能,C+11标准鼓励用using,因为using比较直观。using比typedef直观// 重定义unsigned char typedef unsigned char ty_uchar; using ty_uchar = unsigned char;//

2022-05-05 22:47:38 1010

原创 Pytorch torchvision.transforms模块使用

torchvision.transforms模块构成torchvision.transforms模块包含如下类:__all__ = ["Compose", "ToTensor", "PILToTensor", "ConvertImageDtype", "ToPILImage", "Normalize", "Resize", "Scale", "CenterCrop", "Pad", "Lambda", "RandomApply", "RandomChoice", "RandomOr

2022-05-04 09:41:43 661

原创 QFile文件读写

文章目录简介常用apiQFile类读写文件QFile+QTextStream读写文件简介QFile类提供了一个读取和写入文件的接口,一个读写文本、二进制文件和资源的I/O设备。QFile读写文件的两种方式:1.QFile可以单独使用。2.QFile与QTextStream或QDataStream一起使用。注意:不管操作系统是什么,QFile都希望文件分隔符是’/‘。不支持使用其他分隔符(例如’')。常用api设置文件路径名,可以通过构造函数传参QFile(const QString &am

2022-05-03 17:45:51 8601

原创 [c++11]decltype关键字讲解

文章目录🍺既然有auto了,为什么又要有decltype呢?👍需要某个表达式的返回值类型而又不想实际执行它时👍模板函数返回值依赖模板参数的变量类型👍类型推导时不想忽略引用和顶层const修饰🍺既然有auto了,为什么又要有decltype呢?auto 和decltype关键字都是用于自动类型推断,既然有auto了,为什么还要引出decltype呢,同样是为了解决前者无法满足的使用场景。首先看一下两者的用法上的区别。 int iValue = 10; auto auto_i = iVal

2022-05-02 11:08:29 425 1

原创 GoF设计模式——状态模式(C++实现)

文章目录概念UML结构图代码实现状态模式的使用场景概念状态模式是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为。在探讨状态模式的优雅之前,先来看看以下代码场景;enum StateType{ Red, Green, Yellow};void handle(int stateType){ while(1) { switch (stateType) { case Green: {

2022-05-01 11:48:58 1252

原创 使用QTreeWidget 模仿Qt Designer属性编辑器

简介QTreeWidget类提供了一个使用预定义树模型的视图,提供了一个标准的树小部件,带有一个经典的基于item的接口。这个类基于Qt的模型/视图体系结构,使用默认模型来保存项目,每个项目都是一个QTreeWidgetItem, 使得将数据的存储与其表示分离开来。运行效果常用Api设置表头,为每一列设置标签。void setHeaderLabels(const QStringList &labels)单列可用下面的函数void setHeaderLabel(const QStri

2022-04-30 00:38:37 2727 4

原创 [C++11] auto关键字详解

为什么引入auto关键字在一些高级语言中,比如 C#、Python 等,程序员在定义变量时可以不指明具体的类型,而是让编译器(或者解释器)自己去推导,让代码的编写更加方便。C++11为了支持自动类型推导了,引入了auto 关键字。 auto str = "csdn"; //自动类型推断,str为 char const * auto fValue = 100.0;//自动类型推断,fValue为double auto auto_iValue = fValue;//自动类型推断,au

2022-04-27 22:25:13 2457

原创 Pytorch 基于经典模型LeNet-5训练MNIST数据集手写数字

LeNet-5官网链接卷积神经网络是一种特殊的多层神经网络。与几乎所有其他神经网络一样,它们使用反向传播算法版本进行训练。它们的不同之处在于架构。卷积神经网络旨在通过最少的预处理直接从像素图像中识别视觉模式。他们可以识别具有极大可变性的模式(例如手写字符),并且对扭曲和简单的几何变换具有鲁棒性。...

2022-04-26 21:28:12 3613

原创 QTableWidget使用讲解

效果.h文件#ifndef WIDGET_H#define WIDGET_H#include <QWidget>namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(QWidget *parent = 0); ~Widget();private slots: void on_btnAdd_clicked(

2022-04-23 17:44:07 627

原创 QFileInfo文件和文件夹操作

QFileInfo类提供与系统无关的文件信息。判断文件夹是否存在或者是不是文件夹/////////////////////// \brief 判断文件是否存在是不是或者是不是文件/// \param fullPath : 输入完整路径名/// \return 存在或者是返回true,否则返回false///bool isExistDir(QString fullPath){ QFileInfo fileInfo(fullPath); if(fileInfo.isDir())

2022-04-21 00:08:03 1062

原创 QSettings读写ini文件

QSettings简介The QSettings class provides persistent platform-independent application settings.Users normally expect an application to remember its settings (window sizes and positions, options, etc.) across sessions. This information is often stored in th

2022-04-19 23:28:06 4546 2

原创 Qt Tcp网络编程

TCP/IP协议在一定程度上参考了OSI的体系结构。OSI模型共有七层,从下到上分别是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。但是这显然是有些复杂的,所以在TCP/IP协议中,它们被简化为了四个层次。来自百度TCP面向连接 是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”TCP提供可靠的服务:Tcp通过校验和,使用重传控制、流量控制和拥塞控制。每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。面向字节流套接字(socket)是通

2022-04-17 11:21:46 3275 1

原创 torchvision.datasets.CIFAR10模块使用讲解

__all__ = ('LSUN', 'LSUNClass', 'ImageFolder', 'DatasetFolder', 'FakeData', 'CocoCaptions', 'CocoDetection', 'CIFAR10', 'CIFAR100', 'EMNIST', 'FashionMNIST', 'QMNIST', 'MNIST', 'KMNIST', 'STL10', 'SVHN', 'PhotoTo

2022-04-17 11:07:47 22932

原创 QComboBox使用讲解

简介QComboBox提供了一种向用户呈现选项列表的方式,以占用最少的屏幕空间。 组合框是一个显示当前项目的选择小部件,可以弹出可选择项目的列表。 组合框可以是可编辑的,允许用户修改列表中的每个项目。常用Api添加item两个重载addItem() 函数,后面都有一个可选的 QVariant 类型的参数 userData,可以利用这个变量存储用户定义数据。void addItem (const QString &text, const QVariant &userData = Q

2022-04-10 12:00:49 12578

原创 GoF设计模式——适配器模式(C++实现)

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

2022-04-10 10:22:38 1019

原创 AttributeError: ‘Series‘ object has no attribute ‘reshape‘

问题描述采用了pandas的Series进行reshape操作时,pandas的Series没有reshape方法而报错landmarks_frame = pd.read_csv('faces/face_landmarks.csv')landmarks = landmarks_frame.iloc[65, 1:]landmarks = landmarks.astype('float').reshape(-1, 2)解决方案:用values方法将Series对象转化成numpy的ndarray,

2022-04-09 18:27:50 941

原创 GoF设计模式——工厂模式(C++实现)

文章目录🌳概念🌳 简单工厂模式🌳 工厂方法模式🌳 抽象工厂模式🌳概念为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共 接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子 类实现,达到了多态的目的。工厂模式属于创建型模式,它提供了一种创建对象的最佳方式。通过定义创建对象的接口,封装了对象的创建;使得类的实例化工作延迟到了子类中。工厂模式的实现方式可分为简单工厂模式、工厂方法模式、抽象工厂模式。🌳 简单工厂模式🍞具体的情形:一个

2022-04-09 18:24:56 1212

原创 Pytorch学习(六)构建神经网络

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言通常,一个典型的神经网络训练过程包括以下几点:1.定义一个包含可训练参数的神经网络2.迭代整个输入3.通过神经网络处理输入4.计算损失(loss)5.反向传播梯度到神经网络的参数6.更新网络的参数,典型的用一个简单的更新方法:weight = weight - learning_rate *gradient定义神经网络本章将讲解定义一个神经一个简单的神经网络。一、pandas是什么?示例:pandas 是基

2022-04-08 23:06:05 1002

原创 Qt 多线程——继承于QThread类的使用方法

wf

2022-04-08 23:02:17 1392

原创 Pytorch学习(五)ReLu激活函数

文章目录概念函数原型参数说明代码示例概念PyTorch实现了常见的激活函数,ReLu为最常用激活函数,其原理就是将小于零的数值截至为0;其数学表达式为:函数原型torch.nn.ReLU(inplace=False)参数说明inplace参数如果设为True,它会把输出直接覆盖到输入中,这样可以节省内存/显存。代码示例input = torch.tensor([ [-5,-3,4,5], [3,2,-3,1], [4,-3,4,2]], dtype=torc

2022-04-07 21:54:11 4617

原创 opencv 图像金字塔

文章目录概念一、opencv 函数支持概念图像金字塔:图像金字塔是图像的集合,所有图像都来自单个原始图像,这些图像被连续下采样,直到达到某个所需的停止点。有两种常见的图像金字塔:高斯金字塔:用于对图像进行下采样拉普拉斯金字塔:用于从金字塔较低的图像(分辨率较低)重建上采样图像高斯金字塔:把金字塔想象成一组图层,层越高,尺寸越小。每一层都从下到上编号,所以层(i+1)(记作Gi+1)比层i (Gi)小。为了在高斯金字塔中生成层(i+1),我们做如下操作:1.将Gi与高斯核卷积:2.

2022-04-07 21:50:40 3186

原创 Pytorch学习(四)MaxPool最大池化

文章目录前言一维池化函数原型参数说明代码示例二维池化函数原型参数说明代码示例前言例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一维池化函数原型torch.nn.MaxPool1d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)如果输入大小为(N,C,Lin) ,则输出(N,C,Lout)计算公式

2022-04-04 22:23:59 8545

原创 GoF设计模式——单例模式(C++实现)

概念单例模式(Singleton Pattern)是使用最广泛的设计模式之一。其作用是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式的写法有很多种,懒汉式、饿汉式等,其中对于多线程场景,也有多种方法,双检锁头、atomic类等。本章讲的是一种更优雅的写法,这种方法也被称为Meyers’ Singleton。即使用函数内的 local static 对象。这样,只有当第一次访问getInstance()方法时才创建实例。当然,这种方法只有在c++11之后才是线程

2022-04-04 22:20:27 1223

原创 Halcon模板匹配——保存与加载形状模板

文章目录需求halcon 算子支持1.保存形状模板2.读取形状模板示例:1.保存形状模板2.读取加载形状模板需求做模板匹配的过程中,需要保存当前的形状模板以便后续进行读取加载。halcon 算子支持1.保存形状模板函数原型:write_shape_model( ModelID, FileName : )参数说明:ModelID:模型的句柄FileName :保存的文件名,形状模型的默认HALCON文件扩展名是’shm’。2.读取形状模板函数原型:read_shape_model(

2022-04-03 11:26:11 5054

原创 Pytorch报urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]错误

问题描述在调用torchvision.datasets.CIFAR10下载数据集的过程中,trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)报如下错误:Traceback (most recent call last): File "D:/pythonCode/pytorch/Learn_Torchvision/Leran_datasets

2022-04-03 11:08:09 7030 5

原创 Pytorch学习(三)Linear层

文章目录前言函数原型参数说明示例前言在讲Linear线性变换之前,先来看一个矩阵变换的例子from __future__ import print_functionimport torchin_features = torch.tensor([2,2,2,2], dtype=torch.double)weight_matrix = torch.tensor([ [5,5,5,5], [3,3,3,3], [4,4,4,4]], dtype=torch.double)

2022-04-02 00:09:50 6525

原创 opencv 直方图比较

前言在中详细讲解了图像直方图,图像直方图比较是度量两张图像相似度的一种手段。为了比较两个直方图(H1和H2),首先我们必须选择一个度量(d(H1,H2))来表示这两个直方图的匹配程度。OpenCV提供了4种不同的指标来计算匹配:相关性Correlation ( HISTCMP_CORREL):N是N是直方图bin的总数。Chi-Square ( HISTCMP_CHISQR)Intersection ( method=HISTCMP_INTERSECT)Bhattacharyya dis

2022-04-02 00:07:20 3081

原创 QSpinBox使用讲解

简介QSpinBox允许用户通过单击向上/向下按钮或按键盘上的向上/向下来增加/减少当前显示的值来调节一个值。用户也可以手动输入值。整形使用QSpinBox,浮点值使用QDoubleSpinBox。常用Api设置最小值void setMinimum()设置最大值void setMaximum();设置当前值void setValue();设置精度 void setDecimals()设置步距void setSingleStep();设置前缀void setSuffix

2022-04-01 00:09:48 4710

原创 opencv 图像重映射cv::remap()(图像上下、左右镜像)

文章目录概念opencv 函数支持 cv::remap()1.函数原型:2.参数说明测试代码:程序运行效果:概念什么是重映射?这是从图像中的一个位置获取像素并将它们定位到新图像中的另一个位置的过程。为了完成映射过程,可能需要对非整数像素位置进行一些插值,因为源图像和目标图像之间并不总是存在一对一的像素对应关系。我们可以表达每个像素位置的重映射( x , y)作为:其中g()是映射的图像,f()是源图像,h(x,y)是作用于(x,y)的映射函数。opencv 函数支持 cv::remap()

2022-04-01 00:07:26 2623

原创 QTextEdit使用讲解

QTextEdit简介QTextEdit是一种高级的文本查看器、编辑器,可以显示图像,列表和表格。工业上,一般将TextEditu用于显示文本信息的窗口。QTextEdit的父类是QAbstractScrollArea,当文本信息太大是,会自动通过滚动条调整显示界面。常用Api设置文本对齐方式,对齐方式有Qt::AlignLeft、Qt::AlignRight、Qt::AlignJustify和Qt::AlignCenter(水平居中)。void setAlignment()设置当前字体的格式

2022-03-25 22:25:51 3141

原创 Pytorch学习(二)Conv2d卷积

函数功能为在由多个输入平面组成的输入信号上应用二维卷积。https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html#torch.nn.Conv2d函数原型torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None

2022-03-25 20:57:40 5437

原创 Pytorch学习(一)Tensor(张量)

构造一个5x3未初始化的矩阵x = torch.empty(5, 3)print(x)打印输出:tensor([[0., 0., 0.],[0., 0., 0.],[0., 0., 0.],[0., 0., 0.],[0., 0., 0.]])构造一个5x3随机初始化的矩阵x = torch.empty(5, 3)print(x)打印输出:tensor([[0.1018, 0.3758, 0.2924],[0.5437, 0.9374, 0.3051],[0.6789, 0

2022-03-24 23:39:02 754

原创 sizeof操作符使用讲解

文章目录🌳 概念🌳 用于内置数据类型🌳 用于变量🌳 用于函数🌳 用于指针🌳 用于数组🌳 用于联合体🌳 用于自定义结构体🌳 用于自定义类型🌳 概念sizeof是C/C++中的一个操作符(operator),如C语言的其他操作符++、–等。它并不是函数。简单的说其作用就是返回一个表达式或括在括号内的类型名所占的字节大小。注:以下在64位平台上测试🌳 用于内置数据类型 cout << "sizeof(char):" <<sizeof(char)<< endl;

2022-03-24 21:30:38 1382

原创 halcon模板匹配 ——多个不同对象同时匹配

文章目录场景效果实现步骤1.读取图像2.分别生成两个ROI3.分别创建各向同性比例缩放形状模板4.分别获取形状模型的轮廓表示5.连接两个模板轮廓XLD6.保存模板相关信息7.读取新的图像8.搜索匹配8.对搜索到的XLD轮廓应用任仿射二维变换9.清除句柄场景需求是在一个视野里同时搜索匹配两个不同类型的对象。效果实现步骤1.读取图像read_image (ModelImage, 'rings_and_nuts')2.分别生成两个ROIgen_circle (ModelROIRing, 1

2022-03-20 10:19:57 4503

原创 Gabor滤波器特征提取原理讲解及c++实现

文章目录Gabor滤波器复正弦载波高斯滤波参数解释gabor滤波核实现效果:Gabor滤波器1946年,Dennis Gabor于在“Theory of communication”一文中提出了著名的“窗口”傅里叶变换(也叫短时Fourier变换,STFT),即Gabor变换。在图像处理邻域,Gabor小波是一种非常有效的纹理表示方法。在空域,一个2维的Gabor滤波器是一个正弦平面波和高斯核函数的乘积:其中s(x, y)是一个复正弦信号,称为载波,Wr(x, y)是一个二维信号高斯型函数,称

2022-03-19 18:56:21 6926 1

原创 opencv dft离散傅立叶变换

文章目录概念一、算法步骤1.将图像扩展到最佳大小2.为复数和实值开辟空间3.进行离散傅里叶变换4.将实部和复部转换为振幅5.转换到对数尺度6.裁剪和重新排列7.归一化运行效果完整代码概念傅里叶变换将图像分解成它的正和余弦分量。换句话说,它将图像从它的空间域变换到它的频域。其思想是,任何函数都可以精确地逼近无穷个正函数和余弦函数的和。傅里叶变换是一种方法。二维图像的傅里叶变换在数学上为:这里f是空间域的图像值,F是频域的图像值。变换的结果是复数。可以通过实像和复像显示,也可以通过幅值和相位图像显示。

2022-03-19 00:26:15 4925

原创 Halcon常用算子汇总

显示相关打开一个窗口dev_open_window()打开一个适应图像大小的窗口dev_open_window_fit_image获取图像窗口句柄dev_get_window ()清除图像窗口的内容dev_clear_window ()关闭活动窗口dev_close_window()显示图像dev_display()在当前窗口显示文字dev_disp_text()在指定窗口显示文字disp_message()设置显示字体类型set_display_font(

2022-03-18 12:15:36 10605 2

空空如也

空空如也

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

TA关注的人

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