自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (6)
  • 收藏
  • 关注

原创 Bresenham算法原理及c代码实现各方向画线

写在前面应用场景:Bresenham算法是图象图形学中的经典算法,在图形渲染、图像画线都会用到它,非常非常著名。特点:原理简单(思想很伟大),计算高效,没有浮点型运算,很适合在硬件实现。这样一个经典、强大的算法还是十分值得学习和记录的!算法原理从数学的角度,建立一个坐标系,当我们在坐标系中画一条线时,这条线上的值(坐标的连续的);但是计算机中的图像是以一个一个像素组成的,是一个又一个的小格子,那么在图像上已知起点和终点画一条线,这条线就是由一个一个格子组成的,Bresenham算法.

2020-09-07 20:50:02 4705

转载 1分钟解决git clone 速度慢的问题

办法使用国内镜像,目前已知Github国内镜像网站有github.com.cnpmjs.org和git.sdut.me/。速度根据各地情况而定,在clone某个项目的时候将github.com替换为github.com.cnpmjs.org即可。示例//这是我们要clone的git clone https://github.com/Hackergeek/architecture-samples //使用镜像git clone https://github.com.cnpmjs.o.

2020-08-29 21:38:22 438

原创 c++ string转char* 乱码问题全面解决

C++提供了两个函数:c_str()和data()当处理较短的string时,直接调用这两个函数没有出现问题,调用格式如下:std::string str = "Hello Word";char* p1 = str.c_str();char* p2 = str.data();但是,当字符串比较长时,采用这两个函数,转换出来的char* 出现乱码,采用下边这种方式是完全没问题的,故记录在此:char * strc = new char[strlen(str.c_str())+1];s

2020-08-26 18:50:47 8839 4

原创 项目【MFC】(四)——鼠标滚轮缩放图像

初始状态:放大后:功能: 鼠标需放在图片控件窗口,然后通过滚轮实现图片缩放,并实时显示当前分辨率和缩放倍数。实现:1、首先需要判断,鼠标是否停留在图片窗口,若是则响应滚轮事件;否则不响应。2、判断是缩小,还是放大。3、缩放时按一定步长缩放,步长可为:0.01,0.02.....等等。4、显示更新分辨率、缩放倍数。选中控件右击——>选择【类向导】——》【消息选择】->【滚轮】。如下:然后跳转至消息代码,添加程序://...

2020-08-07 20:36:42 8006 6

原创 项目【MFC】总结(三)——图像灰度化/彩色化

关于界面左边的按钮事件 “上一帧”、“下一帧”、“跳转至”以及三个“编辑框显示”的功能比较简单,这里就不在记录了。需要注意的是,变量命名一定要规范,这样自己就不容易混乱。比如,原始读入的图像为Img,当前帧为Current_Img,调整帧号为Goto_farme_num等。这一次记录一下右边的【彩色化】和【灰度化】功能,可能更加偏向图像方面而非MFC了。灰度化 /彩色化很简单,灰度化就是将读入的图像直接显示,这里涉及到数组转图像(Vector->Mat)。数组转图像代码如下:..

2020-08-07 19:53:08 1380 1

原创 项目MFC总结(二)——读取CSV文件将数据转化为图像显示在图片控件

功能点击【打开文件】按钮,选择文件打开,将数据处理为图像(默认处理第10帧开始),然后将图像显示在图片控件。注:整个项目有关图像处理的操作基本用OpenCV实现。读取文件实现1、添加按钮控件在窗口界面,将控件拖进即可,控件在【view】->【TOOL Box】中。2、鼠标右击更改点击【属性】更改属性可更改:名称(Caption)ID(最好按功能名更改):如打开文件可命名为IDC_BUTTON_OPENFILE。其他按自己的需求3、添加点击响应事件选.

2020-08-06 21:03:20 3102

原创 项目MFC总结(一)——开篇

工作项目需要弄一个简单的界面,由于2年多前用过MFC,所以选择MFC做,这次的环境是WIN+VS2013+MFC+OpenCV3.这次写博客的目的是为了记录一下开发的过程,也相当于是一个笔记吧,可以寄随时查看,以防以后忘记。后面会写一个MFC+OpenCV的图像处理软件开发全过程。本次的需求1.通过读文件读取触摸点数据。2.将触摸点的数据(二维)用图像显示:彩色、灰度。3.能用鼠标移动图像,滚轮缩放图像,能框选图像中的局部并弹出局部的触摸数据(且缩放不能影响数据显示)。4.能选取上一

2020-08-06 20:34:32 789

原创 windows/ubuntu下访问Github图像加载失败解决方法

一、Windows下解决方法:修改hosts文件具体步骤参考:https://blog.csdn.net/qq_38232598/article/details/91346392亲测有效!!!二、Ubuntu下按下ctrl+alt+T打开命令终端,输入:nslookup github.com按下ctrl+alt+T打开命令终端,再输入:nslookup github.global.ssl.fastly.net写入hosts文件,刷新缓存按下ct..

2020-05-14 14:16:50 659 3

原创 Task02几何变换

Datawhale 计算机视觉基础-图像处理(上)-Task02 几何变换2.1 简介该部分将对基本的几何变换进行学习,几何变换的原理大多都是相似,只是变换矩阵不同,因此,我们以最常用的平移和旋转为例进行学习。在深度学习领域,我们常用平移、旋转、镜像等操作进行数据增广;在传统CV领域,由于某些拍摄角度的问题,我们需要对图像进行矫正处理,而几何变换正是这个处理过程的基础,因此了解和学习几何变换也...

2020-04-13 01:31:28 599

原创 Task05阈值分割/二值化

Datawhale 计算机视觉基础-图像处理(上)-Task05 图像分割/二值化5.1 简介该部分的学习内容是对经典的阈值分割算法进行回顾,图像阈值化分割是一种传统的最常用的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术。它特别适用于目标和背景占据不同灰度级范围的图像。它不仅可以极大的压缩数据量,而且也大大简化了分析和处理步骤,因此在很多情况下,...

2020-04-12 22:49:11 1269

原创 Task04图像滤波

Datawhale 计算机视觉基础-图像处理(上)-Task04 图像滤波4.1 简介图像的实质是一种二维信号,滤波是信号处理中的一个重要概念。在图像处理中,滤波是一种非常常见的技术,它们的原理非常简单,但是其思想却十分值得借鉴,滤波是很多图像算法的前置步骤或基础,掌握图像滤波对理解卷积神经网络也有一定帮助。4.2 学习目标了解图像滤波的分类和基本概念理解均值滤波/方框滤波、高斯...

2020-04-12 17:17:59 725

原创 剑指offer系列——替换空格

前言刷题平台:牛客网语言:C++题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。1、思路最简单的方法就是从头到尾遍历,但是时间复杂度为O(n^2)。本文采用一种时间复杂度为O(n)的方法。我们可以先遍历一次字符串,这样就可以统计出字符串空格的总...

2020-02-24 15:02:38 211

原创 剑指offer系列——二维数组中的查找

前言刷题平台:牛客网语言:C++题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。1、思路首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数组,剔除这个数字所在的列;如果...

2020-02-24 14:44:21 196

原创 2019年回顾及总结

地点

2020-02-05 17:18:02 991 9

转载 mwArray和cv::Mat互相转化函数

最近用C++/OpenCV调用MATLAB函数,有必要专门把这两个函数拿出来记录一下。需要注意的是,Mat2mwArry函数的输入Mat类型是 CV_64FC1,灰度图。如果要传递多通道图像的话,需要先cv::split()成多个灰度图像分别传给matlab。mwArray2Mat的返回Mat的类型是CV_64FC1,可以通过cv::Mat::convert()转化成所需要的类型...

2019-11-19 22:13:24 1477

转载 用Matlab画外接矩形——Regionprops函数详解:度量图像区域属性

Regionprops:用途是get the properties of region,即用来度量图像区域属性的函数。语法:STATS = regionprops(L,properties)描述:测量标注矩阵L中每一个标注区域的一系列属性。L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。返回值STATS是一个长度为max(...

2019-11-19 22:06:43 6091 1

转载 如何在C++程序(工程)中调用Matlab函数

C++调用Matlab主要有两种方式,一种是调用Matlab的计算引擎,即调用Matlab本身;另一种是调用matlab中由mcc编译生成的dll文件,这种方法是Matlab利用C++ Complier将m文件转化为C++源码,产生能够完全脱离Matlab运行环境独立执行的DLL程序,从而能够在C++程序中调用DLL实现对Matlab代码的利用。不过,需要说明的是,C++的编译速度是要比Mat...

2019-11-19 21:57:27 6754 3

转载 OpenCV基础——IplImage中的widthStep

IplImage有两个属性容易导致错误:width和widthStep前者是表示图像的每行像素数,后者指表示存储一行像素需要的字节数。在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。如果8U单通道图像宽度为3,那么widthStep是4,加一个字节补齐。这个图像的一行需要4个字节,只使用前3个,最后一个空着。也就是一个宽3高3的图像的...

2019-10-16 20:31:32 877

转载 OpenCV基础——cv::Mat::step

说在前面关于opencv的Mat类step的问题是我2019秋招找工作笔试时遇到的,平时没有注意这些细节,所以也没有答出来,简历上却写着熟悉opencv,我着实感到非常羞愧,所以从这篇文章开始记录有关opencv的基础细节问题。这些细节不一定在工作中能时常用到,但在某一个关键时间点却可能突然出现,打得自己措手不及,所以这些细节是一定要注意的。我不准备刻意地去搜集这些细节,一是这些基础细节实在太...

2019-10-16 20:17:12 2729

转载 机器学习——K-means算法

K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛。K-Means算法有大量的变体,本文就从最传统的K-Means算法讲起,在其基础上讲述K-Means的优化变体方法。包括初始化优化K-Means++, 距离计算优化elkan K-Means算法和大数据情况下的优化Mini Batch K-Means算法。1. K-Means原理初探    K-Mea...

2019-08-29 08:23:30 990

转载 机器学习——ANN(BP神经网络)

1 反向传播算法和BP网络简介误差反向传播算法简称反向传播算法(即BP算法)。使用反向传播算法的多层感知器又称为BP神经网络。BP算法是一个迭代算法,它的基本思想为:(1)先计算每一层的状态和激活值,直到最后一层(即信号是前向传播的);(2)计算每一层的误差,误差的计算过程是从最后一层向前推进的(这就是反向传播算法名字的由来);(3)更新参数(目标是误差变小)。迭代前面两个步骤,直...

2019-08-28 13:47:41 3135

转载 机器学习—K近邻(KNN)

算法概述1、kNN算法又称为k近邻分类(k-nearest neighbor classification)算法。最简单平凡的分类器也许是那种死记硬背式的分类器,记住所有的训练数据,对于新的数据则直接和训练数据匹配,如果存在相同属性的训练数据,则直接用它的分类来作为新数据的分类。这种方式有一个明显的缺点,那就是很可能无法找到完全匹配的训练记录。kNN算法则是从训练集中找到和新数据最接近的k...

2019-08-27 10:59:35 494

原创 机器学习—初窥支持向量机(SVM)

前言SVM算法在在1995年正式发表,在针对中小型数据规模的分类任务上有着卓越的效果,同时有着完整的理论证明,在20世纪末的几年和21世纪初的10年完胜神经网络,吴恩达在其2003年的《Machien learning》公开课上用两节课的时间对其进行讲解,而神经网络讲解了20min左右。就是这个算法把神经网络按在地上摩擦了大概15年的时间,直到深度学习的兴起。但即便这样,现在SVM算法依旧被广...

2019-08-26 16:37:46 1431

转载 【面试题】——C++ vector和list的区别

C++ vector和list的区别1.vector数据结构vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。另外,当数组中内存空间不够时,会重新申请一块内存空间并进行内存拷贝。2.list数据结构list是由双向链表实现的...

2019-08-25 09:39:41 406

转载 剑指offer系列——指针常量和常量指针的区别(Const加在指针不同位置的区别)

1.常量指针定义:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针。声明:const int * p;int const * p;注:可以将一个常量的地址赋值给一个对应类型的常量指针,因为常量指针不能够通过指针修改内粗数据。只能防止通过指针引用修改内存中的数据,并不保护指针所指向的对象。2.指针常量定义:指针常量是指指针所指向的位置不...

2019-07-24 17:53:24 336

转载 剑指offer系列——C++成员变量初始化顺序

刚开始浏览《剑指offer》,书中举了一个面试者的例子:对方声称精通C++,却不清楚C++成员变量初始化顺序。说实话,我也不清楚,看了《C++ primer》书中作了简短介绍,然而我并没有记住。怕面试被问到,所以在网上搜索一波,总结一下。博客来源:https://blog.csdn.net/zhaojinjia/article/details/8785912由于面试题中,考官出了一道简...

2019-07-24 17:23:18 174

原创 C++_Primer第五版—第八章—练习8.13—使用ostringstream

#include <iostream>#include <sstream>#include <fstream>#include <string>#include <vector>#include <cctype>using std::vector; using std::string; using std::c...

2019-07-22 16:44:13 150

原创 非常实用方便快捷的批量重命名软件——ReNamer Lite

重命名工具有很多,总体来说大同小异,要是能熟练一个,还是很能提高效率的。今天给大家介绍一款功能强大、免费的重命名工具:ReNamer Lite。别被它的名字Lite给欺骗了,功能非常强大。下载地址:http://www.den4b.com/products/renamer 支持简体中文 支持Windows 98以后的系统 支持正则表达式和PascalScript以上转自:https:/...

2019-07-14 15:17:17 7685 4

原创 WIN10下安装LableImg步骤及常见问题解决

基本步骤:可参考:https://blog.csdn.net/HuaCode/article/details/79710748 或https://blog.csdn.net/HuaCode/article/details/79710748以上博客的步骤都是没有错的,只是不同的电脑、环境可能会出现不同问题。问题1:安装lxml 出现"You are using pip v...

2019-07-14 13:36:06 1235 3

原创 C++_Primer第五版—第四章—4.7节-位运算符练习

//练习4.21#include <iostream>#include <vector>void main(){ std::vector<int> a{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0 ,11,12,13,14}; for (auto i = a.begin(); i != a.end(); ++i){ *i =...

2019-07-04 12:07:57 230

原创 C++_Primer第五版—第三章—3.6节-多维数组练习

#include <iostream>void main(){ //练习3.43 int ai[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; //版本1:范围for for (int (&i)[4] : ai){ //把i绑定到ai的第一个4元素数组上 for (int j : i){ std...

2019-07-01 19:33:34 155

原创 色彩转换系列之RGB格式与HSV格式互转原理及实现

写在前面HSV是一种将RGB色彩空间中的点在倒圆锥体中的表示方法。HSV即色相(Hue)、饱和度(Saturation)、明度(Value),又称HSB(B即Brightness)。色相是色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等。饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。明度(V),取0-max(计算机中HSV取值范围和存储的长度有关)。HSV...

2019-06-17 17:56:26 8494 4

原创 色彩转换系列之RGB格式与HSI格式互转原理及实现

写在前面HSI色彩空间是从人的视觉系统出发,直接用颜色三要素:色调(Hue)、饱和度(Saturation或Chroma)和亮度 (Intensity或Brightness)来描述色彩。H——表示颜色的相位角,是彩色最重要的属性,决定颜色的本质。红、绿、蓝分别相隔120度;互补色分别相差180度,即颜色的类别。 S——表示颜色的深浅程度,饱和度越高,颜色越深。与白色的比例有关,白色比例...

2019-06-17 17:01:16 11283

原创 使用VS2013运行.exe出错系列解决办法

问题一:在VS中运行编译程序正常,但运行生成的.exe出现“无法打开某某文件”的问题: 无法打开这些文件夹,就是在.exe目录下没有改文件夹,所以找不到。解决办法:将这些文件全部放在.exe目录下。拓展:当然还会出现“无法加载某某模型”,“无法找到某某”,.......诸如此类的问题,我们只需将报错打不开的这些文件统统放在.e...

2019-06-13 15:37:47 2269

原创 VS出现LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' 不匹配解决办法

在工程上右键-》属性-》c/c++-》代码生成-》运行库因为所选的工程运行库选择错误导致的。其中四个选项的对应含义如下:多线程调试Dll (/MDd) 对应的是MD_DynamicDebug多线程Dll (/MD) 对应的是MD_DynamicRelease多线程(/MT) 对应的是MD_StaticRelease多线程(/MTd)对应的是MD_StaticDebug这...

2019-06-13 15:14:19 3386 1

转载 win10下安装Ubuntu16.04双系统——详细步骤

前情提要如何卸载(删除Ubuntu),Win10下试了许多种方法,什么MbrFix、EasyBCD、亦或是Boot Option。都不行。前两者不行,操作之后重启无法直接进入Windows,后者也不行,找不到所谓的Delete Option,或者什么反应都没有。然后忽然看到一篇醍醐灌顶的博文:https://blog.csdn.net/cfqcfqcfqcfqcfq/article/det...

2019-03-06 10:57:03 247

转载 opencv-图像遍历的几种方式

转载:https://www.cnblogs.com/ronny/p/opencv_road_2.html我们在实际应用中对图像进行的操作,往往并不是将图像作为一个整体进行操作,而是对图像中的所有点或特殊点进行运算,所以遍历图像就显得很重要,如何高效的遍历图像是一个很值得探讨的问题。一、遍历图像的4种方式:at&lt;typename&gt;(i,j)Mat类提供了一个at的方法...

2019-03-06 10:23:21 443 2

转载 opencv矩阵元素数据类型总结

转自:http://www.jianshu.com/p/204f292937bb 在以下两个场景中使用 OpenCV 时,我们必须事先知道矩阵元素的数据类型:使用 at 方法访问数据元素的时候要指明数据类型 做数值运算的时候,比如究竟是整数除法还是浮点数除法。但面对一大堆代码,我们有时并不清楚当前的矩阵元素究竟是什么类型,这篇文章就是以 cv::Mat 类为例来解决这个问题。c...

2019-02-26 13:58:50 344

原创 git 常用命令-精简版

1.创建仓库mkdir gitcd git  ——创建/home/XXX/git空目录cd dir ——访问dir文件夹2.通过git init命令把这个目录变成Git可以管理的仓库:git init ——初始化Git仓库,使git可以管理该文件夹3.用命令git add告诉Git,把文件添加到仓库(实际上就是把文件修改添加到暂存区):git add filename...

2019-02-23 17:44:07 148

转载 git常用命令-详解版

原博客地址:https://blog.csdn.net/ithomer/article/details/7529022一、 Git 命令初识在正式介绍Git命令之前,先介绍一下Git 的基本命令和操作,对Git命令有一个总体的认识示例:从Git 版本库的初始化,通常有两种方式:1)git clone:这是一种较为简单的初始化方式,当你已经有一个远程的Git版本库,只需要在本地克隆一...

2019-02-21 21:58:14 764

kalman_c.zip

Kalman滤波纯C语言实现,实现了部分矩阵运算,算法验证过了,是稳定的。

2021-01-17

POSHE算法c++代码

这是按照论文原理用c++写的,有注解,修改读图片路径就可运行。详细解读可看:https://blog.csdn.net/weixin_40647819/article/details/88416512

2019-03-13

EasyUEFI免费版3.6

在UEFI模式下easyUEFI可以帮我们管理UEFI启动项,可以帮助我们删除卸载Ubuntu,进而重装~博主亲测可用!

2019-03-06

Git使用超有用教程

超级详细实用的git使用教程,有目录,包括windows和Linux下的使用方法,适合初学者学习~

2019-02-21

长江水质预测(2005年数学建模)+神经网络

这是2005年数学建模国赛a题,长江水质预测,采用matlab实现,若有需要可进行下载交流。

2018-04-14

空空如也

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

TA关注的人

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