- 博客(70)
- 资源 (15)
- 收藏
- 关注
原创 螺钉 螺母 硬币三种物体的识别
对于区域增长和链码表的一个应用。其中实现了几个部分:可以在图像中画出外接矩形(通过区域增长找最左,最右,最上,最下这四个点。这个功能注释起来了),通过区域增长可以得到单个区域的面积,实现了对于多个物体进行链码跟踪。之后进行识别就很简单了,但是有一步没有实现。当两个物体粘连时,如何解决?#include<iostream>#include<gdal_priv.h>#include<list>#i
2016-11-21 18:54:24 1657 2
原创 从文件中或控制台每次读取一个单词或一行
从文件中读取: 方法一:#include<iostream> #include<fstream> #include<string> using namespace std; int main() { string word[30]; ifstream read; ofstream display; read.open("zs.txt"); d
2016-11-01 15:06:55 812
原创 插入排序算法和冒泡排序算法
//插入排序算法/* 插入排序算法就是先把最开始的两个数进行排序,然后第三个插入前两个之中,第四个数插入前三个数中,以此类推 例如:1,5,9,6,3,2,8,7,4,0 1,5,9,6,3,2,8,7,4,0 1,5,6,9,3,2,8,7,4,0 1,3,5,6,9,2,8,7,4,0 1,2,3,5
2016-10-23 10:59:08 322
转载 快速排序算法
//快速排序算法:/* 对于一个给定的数组,从中选择一个元素,以该元素为界将其余的元素划分为两个子集, 一个子集的所有元素都小于该元素,另一个元素的所有子集都大于或等于该元素。对这样 两个子集递归执行这一过程,当某个子集中的元素数小于2时,这个子集就不需要再次排序 以数组a[] = {5,9,6,8,7,3,1,4,0,2}为例 5,9,6,8,7,3,1,4,0,2
2016-10-22 17:16:00 258
转载 对话框显示加载的滑动图片
// ShowImg.cpp : 实现文件//#include "stdafx.h"#include "DialogImgShow.h"#include "ShowImg.h"#include "afxdialogex.h"// ShowImg 对话框IMPLEMENT_DYNAMIC(ShowImgDlg, CDialogEx)SCROLLINFO scroll;static int y
2016-10-21 19:48:13 325
原创 三线性插值
效果并不理想,在图像梯度大的地方很容易出现噪声干扰。 运行时间很长,时效性差void Cimage2View::ThreeLinearInterpolation(unsigned char** SourceData, int Width , int Height , int Band , unsigned char** NewData, i
2016-10-19 19:12:30 803
转载 otsu大津法
int Otsu(unsigned char* src,int Height,int Width) { //histogram float histogram[256] = {0}; for(int i=0; i < Height; i++) { unsigned char* p=src + W
2016-10-18 11:03:13 250
转载 squeeze(s1,s2),把字符串s1中与s2字符的相同的部分去掉
两个字符串,s1,s2 squeeze(s1,s2),把s1中与s2字符的相同的部分去掉需要注意的是:char* s1 = “zhangshuo”;与char s1[] = “zhangshuo”;的区别: 第一个是指针,指向一个const char* 类型,不可以通过s1改变指向字符串的值第二个是数组, 可以通过s1改变字符串。代码实现:#include <iostream>usin
2016-10-17 19:50:30 819
转载 strtob 十进制整数n变为任意进制以字符串形式输出
strtob(int n,char* s,int b); 实现十进制整数n变为b进制的数,并以字符串的形式输出(s);具体实现:#include <iostream>using namespace std;void reverse(char s[]) //字符串的反转{ int i ,j; char temp; for(i = 0,j = strlen
2016-10-17 19:43:23 581
转载 找出缺失的整数
题目: 一个无序数组里有99个不重复正整数,范围从1到100,唯独缺少一个整数。如何找出这个缺失的整数?答:很简单也很高效的方法,先算出1+2+3….+100的和,然后依次减去数组里的元素,最后得到的差,就是唯一缺失的整数。题目扩展: 一个无序数组里有若干个正整数,范围从1到100,其中99个整数都出现了偶数次,只有一个整数出现了奇数次(比如1,1,2,2,3,3,4,5,5),如何找到这个出现奇数
2016-10-17 19:36:14 410
原创 在MFC中,不借用其他的库函数读取BMP图像,显示,也可以重新生成
void CReadBMPImageAndShowView::OnOpenimage(){ // TODO: 在此添加命令处理程序代码 CFileDialog log(true,"file",NULL,OFN_HIDEREADONLY, "bmp|*.bmp||",NULL); if(log.DoModal() == IDOK) {
2016-10-11 17:07:49 567
转载 求最大公约数
#include <iostream>using namespace std;//辗转相除法和更相减损术都可以求最大公约数,但是各自都有各自的弊端//更相减损术和移位运算的结合,改法可以达到相对较好效果int gcd(int numberA,int numberB){ if(numberA == numberB) return numberA; if(numb
2016-10-09 22:00:05 262
原创 链码表追踪二值图像的最外层轮廓
#include <iostream>#include <string>#include "gdal_priv.h"using namespace std;/********************************************************* 根据容差判断两像素颜色是否相近* 参数c1、c2为两种颜色信息,delta为容差*****************
2016-10-09 16:53:20 1343
原创 Hough变换检测直线
直线的霍夫变换:霍夫空间极坐标与图像空间的转换公式: p = y * sin(theta) + x * cos(theta);之后遍历图像的每个坐标点,每个坐标点以一度为增量,求取对应的p值,存入数组中,查找数组中数目大于一定阈值的p和theta,再在图像空间中把 直线 恢复出来霍夫变换就是把图像左边空间上的线段转换到霍夫空间一个点,然后通过点的数目多少来确定是否为一条线段(但是画出的结果为一条
2016-10-08 21:55:26 858 3
原创 图像的膨胀与腐蚀实现
#include <iostream>#include <string>#include "gdal_priv.h"using namespace std;//图像的膨胀//算法的实现依然有重复的地方,会造成空间和时间上的浪费,但是效果还可以,暂定如此,如有好的算法再进行改进void Expand(unsigned char* date,unsigned char* ExpandImage
2016-10-08 11:36:02 684
转载 二值图像查找边界,并对边界进行搜索,剔除小边界
通过二值图像查找边界代码://pImgData为输入的二值图像void TrackBoundary(unsigned char *pImgData, int nImgWidth, int nImgHeight){ //存储外边界 unsigned char *pBoudary = new unsigned char[nImgWidth * nImgHeight]; mem
2016-10-08 09:17:22 2464
转载 链码表到线段表的转换
不一定会用得到,先放在这里,供以后查阅 本段摘抄自左飞的数字图像处理原理与实践/********************************************************** * 链码表到线段表的转换* 参数:track为链码表,trackDot为线段表**********************************************************/
2016-10-08 08:54:12 387
原创 单波段二值图像区域增长
主要就是用到了两个容器,一个vector,一个list。其中vector用来存贮查找到的所有类型相同的区域,list用于暂时保存找到的类型相同的点,然后以找到的点为新的中心,查找该点的八方向,用来循环查找新的类型相同的点代码如下:#include<iostream>#include<gdal_priv.h>#include<list>#include<vector>using namespa
2016-10-07 10:49:33 498
原创 二叉树
0.创建二叉树//创建二叉树int CteateBiTree(TreeNode** T){ int ch; scanf("%d", &ch); if (ch == -1) { *T = NULL; return 0; } else { *T = new TreeNode(-1...
2016-10-06 15:48:58 344
转载 C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换
使用gmtime函数或localtime函数将time_t类型的时间日期转换为struct tm类型: 使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据其值确定具体的年、月、日等数据。gmtime函数可以方便的对time_t类型数据进行转换,将其转换为tm结构的数据方便数据阅读。gmtime函数的原型如下: struct tm gmtime(time_t * timep
2016-09-24 09:14:53 2286
转载 图像处理中的一阶偏导数和二阶偏导数
一阶差分:二阶偏导数的推导和近似:上式以点(i+1,j)为中心,用i代换i+1可得以(i,j)为中心的二阶偏导数则有:同理:进而可推导:这样我们就可以很好的运用其他的一阶偏导的定义,如SIFT特征OpenCV实现版本中的一阶以及二阶偏导:[cpp] view plain copy /* Computes the partial derivatives in x, y, and sc
2016-09-23 20:35:17 1169
转载 数字图像处理中的高通滤波和低通滤波
高通滤波:边缘提取与增强低通滤波:边缘平滑边缘区域的灰度变换加大,也就是频率较高。所以,对于高通滤波,边缘部分将被保留,非边缘部分将被过滤;对于低通滤波,边缘区域将被平滑过渡。
2016-09-19 14:24:11 24646
原创 双缓冲刷新视图
方法一:在OnDraw函数中修改void Cimage2View::OnDraw(CDC* pDC) { Cimage2Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return;// TODO: 在此处为本机数据添加绘制代码CRect rectC
2016-09-08 09:33:28 432
转载 命令提示符直接编译文件
DE(集成开发环境)确实提高了软件的开发效率,但是要想成为一名非常专业的程序员,不懂手动编译程序是不太合适的。 羡慕人家只需要通过记事本就能编写程序吗?我们知道,一般的C程序开发需要经过三个步骤:源代码编辑——编译生成.obj文件——链接生成.exe文件首先,我们使用记事本写一个helloworld经典程序[plain] view
2016-08-01 16:52:34 554
原创 list::remove_if()
includeincludeusing namespace std;// a predicate implemented as a function: bool single_digit (const int& value) { return (value<10); }// a predicate implemented as a class: class is_odd { public:
2016-08-01 14:51:24 300
原创 C#中对于文件和目录的区别
string path = @”C:\Program Files\Microsoft.NET”; if (File.Exists(path)) { Console.WriteLine(“这是一个文件”); } else if (Directory.Exists(path)) { Console.WriteLine(“这是一个文文件夹”); } else {
2016-07-26 16:50:10 395
原创 MFC中调用exe文件
UINT callbackValue; callbackValue=WinExec("\"exe/被调用exe.exe\" 2 3",SW_SHOW); //就这一个语句,就可以完成调用!!! //”\”exe/被调用exe.
2016-07-14 13:58:25 1753
转载 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-07-14 13:52:22 234
转载 MFC获取当前时间
"http://img.my.csdn.net/uploads/201212/21/1356057266_3230.jpg" alt=""> 框1,框2,框3:Static Text控件,修改ID m_strDate:关联框1,CString数据类型(Value类别) m_strTime:关联框2,CString数据类型(Value类别) m_strDateTime
2016-07-13 16:23:43 376
转载 VC++2010工程中加入SplashScreen
由于笔者在实践过程中走了一些弯路,所以把这些情况记录下来,希望为后来者提供一些经验。在VC6.0时代,可以通过组件为工程加入SplashScreen,具体方法是通过IDE中的菜单Project->Add to Project->Components and Controls,就可以从Visual C++ Components中选择Splash Screen这个组件插入工程。但进入到VC.
2016-03-03 16:04:51 347 1
核相关滤波器源码及论文
2017-03-31
KCF源码及论文
2017-03-29
摄像机标定与三维重建
2017-03-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人