自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixin_45645281的博客

关注【ISP算法与图像处理】

  • 博客(91)
  • 资源 (7)
  • 收藏
  • 关注

原创 W4算法基于背景建模的运动目标检测

W4算法对每个像素点统计三个特征值:最小灰度值、最大灰度值以及最大帧间差分值。所有像素点的特征值就构成了背景模型,比较当前帧与背景模型就能检测出运动的目标。具体步骤可分为三部分:模型初始化、目标检测以及模型更新。模型初始化:首先遍历初始数帧,并对每个像素点计算灰度中值和标准差,然后计算每个像素点帧间灰度变化的最大值、最小值以及最大帧间差分值。计算时间过长,没有进行优化。目标检测:#include <iostream>#include<opencv2/opencv.h

2021-04-25 12:16:08 633

原创 机器学习-自适应学习率和损失函数的反向传播神经网络BPNN

问题背景:多分类问题,输入参数为8组特征值,采用Excel表格导入,输出参数为5种不同的分类结果。数据量为1000组左右,训练组与测试组保持为7:3。BP神经网络模型:隐藏层计算为10层,达到最大准确率,且时间较短。学习率更新公式:损失函数更新公式:有几个超参数需要提前设置好,根据自己的问题背景环境。import numpy as npimport datetimeimport xlrdimport matplotlib.pyplot as pltfro..

2021-04-22 20:59:38 1229 2

原创 C++实现目标微小运动的检测和跟踪通过meanshift、camshift方法

meanshift跟踪算法:meanshift算法用于视觉跟踪时,将基于前一图像中的对象的颜色直方图在新图像中创建置信度图,并使用均值平移来找到靠近对象旧位置的置信度图的峰值。 置信度图是新图像上的概率密度函数,为新图像的每个像素指定一个概率,该概率是前一图像中的对象中出现的像素颜色的概率。meanshift跟踪算法步骤:① 选择搜索窗口,包括窗口的初始位置、大小、形状(对称或歪斜,矩形或圆心)、类型(均匀、多项式、指数或高斯);② 计算窗口的重心;③ 将窗口的中心设置在计算出的重心处;④

2021-04-20 19:28:24 1074

原创 光流法检测材料和目标的微变形区域,计算像素位移和应力应变

光流法的前提假设:(1)相邻帧之间的亮度保持恒定,不适合现实光照环境下测试;(2)相邻视频帧的取帧时间连续,相邻帧之间物体的运动比较“微小”,检测目标属于微变形,微运动;(3)保持空间一致性;即,同一子图像的像素点具有相同的运动。应用场景:(1)物体在运动,相机是静止的;(2)相机在运动,物体是静止的;(3)两者都在运动;本实验是在第一种情况下实现的。光流法用于目标检测的原理:给图像中的每个像素点赋予一个速度矢量,这样就形成了一个运动矢量场。在某一特定时刻,图像上的点与三

2021-04-19 19:38:23 1219 8

原创 LBP特征提取实现运动目标检测跟踪,克服光照突变

局部二值模式(local binary pattern,LBP),其基本思想是将中心像素点的灰度值设为阈值,其圆形邻域内的像素点与之作比较得到二进制码用来表述局部纹理特征,不易受整幅图像灰度线性变化的影响。即当图像的灰度发生均匀变化时,其LBP纹理特征是不变的。因此LBP纹理特征具有灰度不变性。它计算简单,分类能力强,在描述纹理特征提取方面有着显著的效果。针对常规算法不能适应环境光照带来图像亮度变化的问题,结合LBP纹理特征对光照的不敏感性,提出自适应背景更新策略,当环境光照突然变化的条件下,LBP纹理

2021-04-19 17:26:45 1108 2

原创 OpenCV中报错未定义标识符“CV_WINDOW_AUTOSIZE“

CV_WINDOW_AUTOSIZE去掉前面的CV_就是新版本中同样的函数WINDOW_AUTOSIZE

2021-03-18 10:06:10 2073

原创 VS2015配置OpenCV-contribu4.1.1及缺少xfeatures2d等无法打开包括文件: “features2d/test/test_detectors_regression.im问题

一、配置环境:VS2015+OpenCV4.1.1+OpenCV_contrib-4.1.1+CMake3.17.1下载链接:OpenCV:https://opencv.org/releases/OpenCV_contrib:https://github.com/opencv/opencv_contrib/releases OpenCV_contrib版本必须要与OpenCV版本一致CMake:https://cmake.org/download/二、安装步骤2.1 CMa...

2021-03-17 19:12:46 3987 6

原创 项目、基金申请中PDF文件过大,免费压缩方法分享

将文件添加到工具的压缩界面以后,可以直接预览文件压缩后的大小,可以选择注册使用专业版压缩,免费版每天2次机会.Smallpdf:压缩PDF-Smallpfd还有许多文档功能,强烈安利一波。PDFCompressor:压缩PDF-PDFCompressor 免费使用.压缩结果:原文件:10.2M压缩后:1.2M...

2021-03-15 17:23:58 623

原创 Halcon-区域生长和分水岭图像分割

区域生长图像分割regiongrowing (Image,Outregion: Row,Col,Tolerance,MinSize)函数:regiongrowing (ImageMedian, Regions, 1, 1, 2, 100)ImageMedian:输入的单通道图像Regions:输出的一组区域参数3和4:矩形的宽和高,奇数,可以视为卷积核参数5:像素灰度值差-阈值参数6:输出区域的最小像素数,默认为100*区域分割read_image (Image, .

2021-02-14 19:22:06 3700

原创 链队列实例C++代码实现

list_queue.h#pragma once#define Queue_Datatype int#define Init_QueueData 99#include<iostream>class Queue_Node {public: Queue_Node() { data = Init_QueueData; next = NULL; } Queue_Node(Queue_Datatype x) : data(x), next(NULL) { } Queu

2021-02-03 20:55:44 182

原创 循环队列实例C++代码实现

队列是一种先进先出的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。头尾相接的顺序存储结构称为循环队列。Circle_Queue.h#pragma once#define Queue_Datatype int#define Init_QueueData 99#define Queue_Space 10class MyQueue{public: MyQueue(); ~MyQueue(); void Init_Queue(); // 初始化队列 void Destory_

2021-02-03 20:52:16 336

原创 栈的实例C++代码实现

栈是限定仅在表尾进行插入和删除操作的线性表允许插入和删除的一端为栈顶,另一端为栈底,不含任何数据元素的栈称为空栈,栈是一种后进先出的线性表结构。Stack.h#pragma once#include<iostream>#define Stack_DataType int#define Init_StackData 99class Stack_Node{public: Stack_Node() { data = Init_StackData; next = NU

2021-02-01 18:32:30 439

原创 Materials and Manufacturing Processes期刊投稿经验分享

一 投稿结果2020-11-12 第一次投稿,按期刊最初格式排版。2020-11-13 编辑返回意见,告知格式不过关,并且建议论文强调加工问题,而不是特征化或建模或属性,因为本期刊强调加工,否则你的论文将被拒绝。显示结果:Reject & Resubmit2020-11-15 按照文件格式修改,重新提交初稿。2020-11-16 编辑返回意见,重复率超过5%,格式还存在小问题(及其变态,学校单位重复都算)。显示结果:Reject & Resubmit2020-11-18 熬夜完成

2021-01-30 13:09:44 6299 4

原创 Halcon-图像阈值分割

全局阈值*阈值分割-全局阈值read_image (Image1, 'keypad')rgb1_to_gray (Image1, Image)dev_close_window ()get_image_size (Image, Width, Height)dev_open_window (0, 0, Width, Height, 'black', WindowHandle)threshold (Image, Region, 20, 90)dev_display (Image)dev_disp

2021-01-28 17:50:32 458 1

转载 双向循环链表类封装实例C++代码实现

node.h#pragma once/** 节点类型。三个成员分别是:指向前一个节点的指针,元素本身,指向后一个节点的指针。*/class Node {public: int element; Node *next; Node *previous; Node(int element, Node *next, Node *previous) { this->element = element; this->next = next; this->previous

2021-01-28 10:49:37 101

原创 双向链表类封装实例C++代码实现

双向链表是在单链表的每个结点中,再设置一个指向其前驱结点的指针域。Double_Linklist.h#pragma once#include <iostream>using namespace std;typedef int DataType;class Double_Node{public: DataType data; Double_Node *next; Double_Node *prev;};class Double_Linklist{public:

2021-01-28 10:12:37 156

原创 Halcon-图像锐化(边缘处理)

sobel算子*sobel算子read_image (Image, 'claudia')get_image_size (Image, Width, Height)dev_close_window ()dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)dev_display (Image)rgb1_to_gray (Image, GrayImage)sobel_amp (GrayImage, EdgeAmpl

2021-01-25 12:00:24 7261

原创 Halcon-图像滤波(中值滤波和均值滤波)

均值滤波*图像均值滤波read_image (Image, 'claudia')get_image_size (Image, Width, Height)dev_close_window ()dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)dev_display (Image)*生成高斯噪声gauss_distribution (20, Distribution)add_noise_distributi

2021-01-25 11:32:04 4139

原创 Halcon-直方图-直方图均衡化

*灰度直方图read_image (Image, 'can.png')get_image_size (Image, Width, Height)dev_close_window ()dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)*dev_display (Image)rgb1_to_gray (Image, GrayImage)dump_window (WindowHandle, 'bmp', 'D:1/o

2021-01-24 16:41:16 3859 5

原创 Halcon-灰度变换处理(灰度扩展,对数,指数)

线性灰度变换read_image (Image, 'claudia')dev_close_window ()get_image_size (Image, Width, Height)dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)dev_display (Image)* 灰度处理rgb1_to_gray (Image, GrayImage)dump_window (WindowHandle, 'bmp',

2021-01-24 14:01:54 3231

原创 Halcon-图像视频采集

当相机环境配置好后,就可以进行图像和视频数据的采集了。图像视频的采集是机器视觉的输入项,采集图像的速度和质量会直接影响图像处理的效率。1.读取图像文件单张和批量读取:read_image(Image,“xxx.jpg”)read_image (Image, 'C:/Users/xxx/Pictures/RGB.jpg')list_files ('C:/Users/xxx/Pictures',['files','follow_links'],ImageFiles)tuple_regexp_selec

2021-01-19 17:49:36 1632 1

原创 循环单链表C++实现

#pragma once#ifndef Node_hpp#define Node_hpptypedef double value_data;class Node{public: value_data Data; Node *Next;};#endif /* Node_hpp */#pragma once#include "node.hpp"#include <iostream>using namespace std;class Circular_L

2021-01-19 13:30:35 161

原创 机器视觉入门介绍

机器视觉为了响应党中央、国务院做出的建设制造强国的重大战略部署,各地政府、企业、科研部门都在进行积极的探索和部署。加快推动新一代信息技术与制造技术融合发展,推动我国制造模式从“中国制造”向“中国智造”转变,加快实现我国制造业由大变强,正成为我们新的历史使命。当前,信息革命进程持续快速演进,物联网、云计算、大数据、人工智能等技术广泛渗透于经济社会各个领域,信息经济繁荣程度成为国家实力的重要标志。增材制造(3D 打印)、机器人与智能制造、控制和信息技术、人工智能等领域技术不断取得重大突破,推动传统工业体系分化

2021-01-10 16:28:39 728

原创 单链表类封装实例C++代码实现

线性表:零个或多个数据元素的有限序列节点类节点包含数据域Data和链接域Next。node.hpp#pragma once#ifndef Node_hpp#define Node_hpptypedef double value_data;class Node{public: value_data Data; Node *Next;};#endif /* Node_hpp */单链表类single_Linklist.h#pragma once#include "n

2021-01-10 15:58:57 174

原创 动态数组功能C++代码实现

数组是一种线性表数据结构。它用一组连续内存空间,来存储一组具有相同数据类型数据。my_array.h#pragma onceclass My_Array{public: My_Array(); //默认构造函数 My_Array(int N_Size,double D_Value=0); //构造函数,设置数组大小,默认值为Dvalue My_Array(const My_Array& arr); //拷贝构造函数 My_Array& operator=(const

2021-01-02 19:54:17 258 1

原创 C++类操作知识

1 类基础一个类是一个用户自定义的类型,通常是一组成员构成,最常见的成员类别是数据成员和成员函数。成员函数可以定义初始化、拷贝、移动和析构(清理)等语义,对对象使用.操作来访问成员,对指针使用->来访问成员。一个类包含一个成员的名字空间,public成员提供类的接口,private成员提供实现的细节,struct是成员默认为public的class。class X{private:int m;public:X(int i=0) :m{i} {} //构造函数int mf(int i)

2020-12-08 11:42:49 441

原创 C++基础功能-函数

1 函数1.1 函数定义函数:函数的名字;参数列表,可以为空();返回类型,可以是void,可前置或者后置(使用auto)。inline,是一种愿望:通过内联函数整体实现函数调用。constexpx,表示当给定常量表达式作为实参时,可以在编译时对函数求值。noexcept,表示该函数不允许抛出异常。链接说明:例如static。[[noreturn]],表示该函数不会常规的调用/返回机制返回结果。此外,成员函数还能被限定为:virtual,该函数可以被派生类覆盖。override,该函数必须覆盖基类中的一

2020-12-05 09:58:33 310

原创 C++结构、联合与枚举

8.1 结构:是任意类型元素的集合。8.1.1 结构布局结构类型的对象可以被赋值,作为实参传入函数,或者作为函数返回。struct Readout{char hour;int value;char seq;}布局方式:1 (4);4; 1(4);sizeof(Readout)=12;短长短的风格,剩余空间未使用;struct Readout{int value;char hour;char seq;}布局方式:4;2(4);sizeof(Readout)=8;第二行剩余2

2020-11-20 16:47:41 147

原创 C++指针、数组和引用

7.1 指针T表示指向T的指针的类型,T类型的变量能存储T类型对象的地址。int* pi; //指向int的指针;char** p //指向字符指针的指针;int* ap[15] //ap是数组,包含15个指向int的指针;int (*fp)(char*); //指向函数的指针,接受char*实参,返回int;int *f(char*); //接受char*实参,返回int;7.1.1 void*void* 的含义是指向未知类型对象的指针。7.1.2 nullptrnul

2020-11-19 19:48:19 240

原创 C++类型和声明

1.类型1.1bool(布尔值):布尔值,取true或者false,占1个字节。void f(int a,int b){bool b1={a==b};//a=b,则b1为true;否则为false;}bool is_open(File*);bool greater(int a,int b) {return a>b; }bool b1=7; //b1为false;int i1=true;int i2 {ture}; //i1;i2均为1;void f(int i){b

2020-11-16 21:00:13 698

原创 DIC-计算材料应力应变分布

数字图像相关法(digital image correlation DIC),又称数字散斑相关法,是将试件变形前后的两幅数字图像,通过相关计算获取感兴趣区域的变形信息。其基本原理是,对变形前图像中的感兴趣区域进行网格划分,将每个子区域当作刚性运动。博主GitHub代码使用手册cd ncorr_2D_matlabaddpath(pwd);handles_ncorr = ncorr;问题:使用MATLAB处理时,会出现无C++编译器。可以安装C++编译器。我的运行环境是MATLAB2016+VS2

2020-11-15 18:56:49 5805

原创 Excel重复编号,1万个数据重复1到100编号

要求就是1到100然后再1到100 一直重复下去。一:以M列为示范,在M1中输入公式:=IF(MOD(ROW(),100)=0,100,MOD(ROW(),100))二:在左边选择数据范围M1:M500,蓝色区域代表已经选择这M列500行了三:按住CTRL键不放,再按下ENTER键回车,鼠标移到上方公式处。...

2020-11-07 10:05:08 1699

原创 Excel中使某列数据每100行加1,在数值大的情况下避免下拉操作

例如1-100的数值是1,101-200就变为2,201-300就变为2,类推!一:以M列为示范,在M1中输入公式:=INT(ROW(M100)/100)二:在左边选择数据范围M1:M500,蓝色区域代表已经选择这M列500行了三:按住CTRL键不放,再按下ENTER键回车,鼠标移到上方公式处。左边红色圈处代表100到100之后的界限处,右边红色圈处代表正确结果处,在数值大于10000行时,下拉到底很麻烦。...

2020-11-07 09:35:08 2022

原创 Qt-QPushButton、QLineEdit、QLabel各种自定义样式外观

1.x#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QtWidgets>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = nullptr);

2020-10-18 15:22:59 1285

原创 Qt-计算目录下图片文件大小+qlonglong类型转换

.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>class Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = nullptr); qlonglong imageSpace(const QString&path); ~Widget();};#endif // WIDGET_Hx.cpp#incl

2020-10-12 15:59:04 558

原创 Qt-读取二进制文件和文本文件

x.hQFile file("D:/testimage/text.dat"); if (!file.open(QIODevice::WriteOnly)){ std::cerr <<"cannot open file for writing:" <<qPrintable(file.errorString())<<std::endl; return; } QDataStream

2020-10-12 11:15:49 899

原创 Qt-打开拖动的文件

x.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QtWidgets>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(QWidget *parent = nullp

2020-10-11 17:10:41 94

原创 QT-QPainter绘制点,线、矩形,图片等

paintevent.cpp#include "mywidget.h"#include <QPainter>MyWidget::MyWidget(QWidget *parent) : QWidget(parent){}void MyWidget::paintEvent(QPaintEvent */*event*/){ QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing,

2020-10-10 20:09:48 8370

原创 Qt-滚动文字显示

ticker.h#ifndef TICKER_H#define TICKER_H#include <QWidget>class Ticker : public QWidget{ Q_OBJECT Q_PROPERTY(QString text READ text WRITE setText)public: Ticker(QWidget *parent = nullptr); void setText(const QString &newT

2020-10-09 21:17:58 846

原创 Qt-QPaintEvent * /*event*/与*event区别

问题: / *event * /与 *event区别主要区别在于是否调用它,对于第二种情况,加与不加不影响结果。调用void Plotter::mouseMoveEvent(QMouseEvent *event){ if (rubberBandIsShown) { updateRubberBandRegion(); rubberBandRect.setBottomRight(event->pos()); updateRubberBandRe

2020-10-09 20:48:28 288

软件著作权多人合作开发合同模板.docx

适用于学生老师共同开发的软件合同模板

2022-01-11

bookmarks.html

123

2021-08-30

桥梁近景测量安全评估论文小集合

桥梁近景测量安全评估论文小集合

2021-05-10

boostdboostdesc_bgm.i.zip系列文件,解决xfeatures2d问题

“boostdesc_bgm.i”: No such file or directory opencv_xfeatures2d D:\OpenCV\opencv_contrib-4.1.1\modules\xfeatures2d\src\boostdesc.cpp 654,

2021-03-17

xfeatures2d的动态库中缺少的opencv_ffmpeg.dll和opencv_ffmpeg_64.dll

解决无法生成xfeatures2d的动态库:OpenCV源码中opencv/sources/3rdparty/ffmpeg 中缺少opencv_ffmpeg.dll和opencv_ffmpeg_64.dll.

2021-03-17

USB采集卡转换器(图像视频)

笔记本电脑和台式电脑USB采集卡转换器接工业相机,实现视频采集,图像捕捉,需要安装驱动,解决无法安装采集卡到主板上的电脑

2020-12-11

DIC-图像处理计算材料应力应变(MATLAB)

数字图像相关法(digital image correlation DIC),又称数字散斑相关法,是将试件变形前后的两幅数字图像,通过相关计算获取感兴趣区域的变形信息。其基本原理是,对变形前图像中的感兴趣区域进行网格划分,将每个子区域当作刚性运动。再针对每个子区域,通过一定的搜索方法按预先定义的相关函数来进行相关计算,在变形后图像中寻找与该子区域的互相关系数为最大值的区域,即该子区域在变形后的位置,进而获得该子区域的位移。对全部子区域进行计算,即可获得全场的变形信息。由于该方法对实验环境要求极为宽松,并且具有全场测量、抗干扰能力强、测量精度高等优点。

2020-11-15

空空如也

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

TA关注的人

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