- 博客(31)
- 收藏
- 关注
原创 橡皮筋类CRectTracker
其响应WM_LBUTTONDOWN和WM_SETCURSOR消息,因此其实现在这两个消息的响应函数内。下面写了一个例程,并进行分析。CRectTracker m_tracker;m_tracker.m_nStyle=CRectTracker::resizeInside|CRectTracker::solidLine|CRectTracker::hitNothing;CPoint pt_st
2014-02-28 20:23:04 682
原创 遍历圆和直线上的点
在图像处理中,经常会遇到已经圆的圆心和半径,或直线的两个端点坐标,如何准确的进行采样?圆的采样:利用中点画圆算法,但得到的点是无序的,对于某些需要有序点的情况并不适用int x=0; int y=r; float d=1.25-r; pointcontainer.push_back(cvPoint(xin.x+x,xin.y+y)); pointcontainer.push_bac
2014-02-28 19:38:46 3206 1
原创 图像分割工作总结(六)opencv的轮廓矩
opencv的轮廓矩在轮廓匹配中用的比较到,在做图像分割有关工作的时候用到矩来计算闭合区域的形心,现对这个知识点做详细的探究p+q阶原点矩和中心距:定义:计算: Void cvMoments(const CvArr*arr,CvMoments*moments, int binary = 0)arr:图像(1-通道或3通道,有COI设置)或者多边形(点的CvSeq或一族点的向
2014-02-28 16:32:35 1230 1
原创 图像分割工作总结(五)opencv遍历图像
(1)间接访问(调用函数访问)效率不高IplImage*src=cvLoadImage(filename,0);CvScalar s=cvGet2D(src,i,j);printf("%f",s.val[0]);cvSet2D(src,i,j,s);(2)直接访问(单通道单字节)IplImage* src=cvLoadImage(filename,0);(uchar*)(sr
2014-02-28 15:08:52 801
原创 关于宏CV_GET_SEQ_ELEM
#define CV_GET_SEQ_ELEM(TYPE,seq,index)\(TYPE*)cvGetSeqElem((CvSeq*)(seq),(index))用法:从所给序列中取出元素的地址,注意:得到的是地址,即指针所以,关键在于序列中存放的是那种类型的数据,若存放的为地址,那用这个宏得到的就是指针的指针。例程:1.序列中存放的为CvPointCvPoint pt=*C
2014-02-28 11:12:54 2911
原创 CvMemStorage,CvSeq,CvContour和cvFindContour的分析
CvSeq源码#define CV_TREE_NODE_FIELDS(node_type) / int flags; /* micsellaneous flags */ / int header_size; /* size of sequence header */
2014-02-28 11:03:02 1474
原创 阈值分割时的一个问题
在采用Ostu阈值分割时,出现一个问题,当图像中大部分像素值近似为0,或近似为255时,就难以得出正确的分割结果,纠结了很久,还以为是分割算法写错了!后来看到一篇论文,讲到要保证阈值分割算法的稳定性,就要将小于2%和大于98%的像素值除去,即计算灰度直方图时并不算在内。 根据此种方法,做出的阈值分割算法的健壮性有所提高。
2014-02-27 20:43:42 1584
原创 利用opencv显示图像 和SetImageROI函数
这好像是个很简单的问题,网上利用opencv显示图像的代码大都是利用opencv已经删除的类CvvImage中的函数实现的,但是,它在显示图像的过程中,会根据DC的大小而缩放,这是浏览器的习惯,不符合图像处理的习惯,而且也不利于人机交互。因此,必须重写一个1:1显示的代码。
2014-02-27 19:24:46 1310
原创 图像分割工作总结(四)--Slider,edit, spin控件的结合使用
slider control、edit control、spin control的结合使用,读取文件夹,做出图片浏览器的效果 对slider control 实例化一个对象,其响应消息:WM_HSCROLL CSliderCtrl m_slider; m_slider.SetRange(int nM
2014-02-27 18:39:57 757
原创 图像分割工作总结(三)--文件夹,文件的创建与删除
文件夹的创建、删除以及遍历创建单级文件夹 CreateDirectory(char *,NULL);删除文件夹: (1)文件夹为空,直接用RemoveDirectory(LPCTSTR lpPathName) (2)文件夹非空,MFC中没有现成的封装函数,做了一个删除子目录中没有文件夹的封装,子目录中含
2014-02-27 18:38:49 510
原创 图像分割工作总结(二)字符串
CString 中的几个操作函数 GetBuffer() 返回一个const char* 指针 //转换为CString(暂无测试出来) CString cstr; char* ch="jiayou"; std::string str="zhanghui"; cstr.Format(_T("%s"),ch); cstr.Format(_T("%s"),
2014-02-27 18:36:26 574
原创 图像分割工作的总结(一)
做了两个月的图像分割,主要工具为:MFC(VS2010)、opencv2.3.1、ITK4.3.1、VTK5.8.0,现做如下知识性的总结一、配置问题 1.opencv2.3.1 下载已编译的库,设置一下计算机的环境变量,然后直接在VS中包含一下库文件即可。 2.ITK和VTK使用CMake编译二、程序(MFC)1. 打开文件及文件夹,定制对话框
2014-02-27 10:10:52 868
原创 关于cvSnakeImage函数的问题
1.初始轮廓为圆,但演化后的轮廓内部却总有线原因:输入cvSnakeImage的初始轮廓点是有序的,但我输入的轮廓因为用的中点生成圆算法,所以是无序的。换一种圆生成算法就不会出现这种错误了。 2.cvSnakeImage中的三个参数alpha, beta, gamma(1)范围都是0~1(2)gamma是图像越大越好(3) CvSize win是搜索范围,越大得到的点
2014-02-23 23:58:13 1489
原创 vector迭代器的begin()和end()
参考博客:http://blog.csdn.net/kjing/article/details/6936325迭代器和反向迭代器使用时:end()永远指向最后一个元素的下一个位置;若容器为空时,迭代器的begin()和end()指向位置相同,而后即使再给容器赋值,迭代器的begin()指向,仍然为空。错误范例:#include #include void pri
2014-02-23 12:01:29 6050
原创 opencv遍历图像
刚开始参照《opencv教程基础篇》27页的程序,写了遍历像素的程序:for{int h=0;hheigt;h++} for(int w=0;w=src->width;w++) { src->imagedata[src->width*h+w]=。。。。 }结果不对,参照下面博客写了程序http://blog.csdn.
2014-02-20 21:57:07 534
原创 opencv查找凸包
参考博客:http://blog.csdn.net/augusdi/article/details/9022627#comments但是,该文中有利用各点做圆的部分,不理解有什么用处,我的程序如下(包含了大津阈值分割):#include #include #include #include int main( int argc, char** argv ){ Ip
2014-02-20 21:51:25 698
原创 opencv中cvFindContours函数两个测试程序
#include #include #include #include #define CVX_RED CV_RGB(0xff, 0x00, 0x00) #define CVX_GREEN CV_RGB(0x00, 0xff, 0x00) #define CVX_BLUE CV_RGB(0x00, 0x00, 0xff) int main( int argc, c
2014-02-20 15:13:14 1067
原创 opencv编程时的三个错误
这个问题出现在openc(2.3.1)和MFC混合编程时,解决方法是在附加依赖项中添加动态库opencv_calib3d231d.lib opencv_contrib231d.lib opencv_core231d.lib opencv_features2d231d.lib opencv_flann231d.libopencv_gpu231d.lib opencv_hi
2014-02-16 21:32:51 799
转载 MFC判断一个点是否在一个区域内
1.判断一点是否在矩形区域内的方法: CRect rc (point_1,point_2);//构造矩形区域调用CRect::PtInRect BOOL flag = rc.PtInRect(point_key); if (flag) { 点point_key在构造的矩形区域内; } else
2014-02-15 10:10:23 4572
原创 MFC 中 删除一个非空文件夹
1.空文件夹的删除MFC中提供了删除文件夹的一个封装函数 RemoveDirectory(LPCTSTR lpPathName)2.非空文件夹的删除首先将文件夹下所有内容删除,再调用RemoveDirectory(LPCTSTR lpPathName)void myDeleteDirectory(CString directory_path)//删除一个文件夹下的所有内
2014-02-14 16:59:13 718
原创 MFC中CRect和opencv中CvRect的区别
CRext(int l, int t, int r, int b ) 分别指明左上角坐标和右下角坐标MFC的CRect类的bottom,left其实并不包含在矩形框内CRect的left和right是左闭右开,比如某图像只有一个像素,那么left是0,right是1,宽度是right-left。设置left和right有时容易造成误解,容易让人误以为宽度等于right-left+1,r
2014-02-14 14:52:02 2606
原创 e:\vs2010\mitk\mitk\MImage.h(4): error C2011: 'MImage' : 'class' type redefinition
出现了类的重复定义,原因是在头文件和cpp文件中重复包含了定义类MImage的头文件
2014-02-14 12:42:01 867
转载 MFC-控件大全-Slider Control
MFC-控件大全-Slider Con所有的控件的创建基本都是同一套道路;第一步:.h中创建一个CSliderCtrl 类的对象 ;CSliderCtrl m_ctrlSlider;第二步:.cpp中的void CMyDlg::DoDataExchange(CDataExchange* pDX)函数进行初始化控件;//初始化控件void CMyDlg::
2014-02-14 09:49:22 607
转载 MFC对话框消息传递顺序
MFC应用程序中处理消息的顺序,创建窗口的过程关闭窗口的顺序(非模态窗口),打开模式对话框的函数调用顺序..2007-12-06 19:23MFC应用程序中处理消息的顺序1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供
2014-02-13 11:23:52 638
转载 CString类常用方法---GetLength(),strlen(),IsEmpty(),Empty()
int GetLength( ) const; //得到字符串的字节数(并不都是个数,如汉字一个字占两个字节)int strlen( const char *string ); //计算参数字符串里面字节的个数并返回BOOL IsEmpty( ) const; //如果字符串含有字符就返回假,如果是个空字符串就返回真void Empty( ); //
2014-02-12 21:07:07 2655
转载 MFC文件遍历类CFileFind例程
void CDicomViewerDlg::OnBnClickedButtonFindfile(Cstring root)//实现对文件的遍历{ CFileFind myFile; CString FilePath; if (root.Right(1)!="//") { root+="//"; }
2014-02-12 18:19:29 667
转载 MFC中Spin Control,Slider Control,Edit Control控件结合使用示例
很多时侯我们希望某个参数的更改方式,对于用户来说应该尽可能友好。这里给出样例,对于灰度阈值这个参数,实现既能通过滑动调节,又能够通过输入直接给出,同时还可以用按钮微调。这三个控件之中有一个改变,另外的也会响应。消息循环有3个 ON_WM_HSCROLL() ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN2, &ParAdjust::OnDeltapos
2014-02-12 17:59:11 2214
原创 VS2010编译错误:fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x
在MFC混合编程中增加了一个自己写的类,结果出现错误:VS2010编译错误:fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x下面是彻底解决方法:在工程的stdafx.h中添加(如有类似语句,需注释掉)#ifndef WINVER // Allow use
2014-02-08 12:59:49 764
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人