Posts List

sqlite操作

导入excel到表格 本来想使用sqlite expert personal导入表格的,后来发现软件里面没有import/export菜单,后来问只有professional版本才有这个菜单的,我晕,穷人那只能敲命令行了。 注意导入的excel表格是要把表头给去掉的,然后按照sqlite表格里面标头的顺序进行导入,excel的表格用csv的格式来保存。 sqlite3 .separator ',' .import filename tablename 导入文件乱码 经常会出现导入的文件的中文出现乱码的情况,建议就是把文件用记事本打开,然后用UTF-8的格式另存为csv的文件。 datatime()函数时间出错 使用sqlite数据库时,使用datatime函数获取当前时间的时候,时间总是错误的,总是晚了好几个小时,结果在datatime()函数里面加上参数就好了,datetime(’now’,’localtime’)。 database is locked 读完数据库一定要关闭,无论是reader还是dataset,必须统统都要close

Iplimage versus Mat

我们可能经常面临这样的困惑,Iplimage和Mat这两种数据结构,我们应该用哪一种数据结构。 Iplimage一开始就存在opencv库之中,他来源于Intel的另外一个函数库Intel Image Processing Library(IPL),这是一种非常重要的数据结构。在经典书籍里面的sample用的基本都是Iplimage这个数据结构。但是这是一种C风格的数据结构,你必须为他分配以及释放内存。 Mat则是一种新的数据结构,越来越多的人也在使用这种数据结构了,因为它是面向对象的。所以我们不需要自己来为它管理内存。它是通过计数的方式来进行引用,如果它的引用计数为0的话,那么它就会自动释放内存。 老实说,用什么数据结构,我也不知道。因为我觉得有些方法,Mat数据结构还不具备,有的方法只有运用Iplimage才可以。 将Iplimage转化为Mat IplImage* ipl; Mat m = cvarrToMat(ipl);

道路识别demo

最近做的道路识别一开始终于弄懂了点东西,一开始在网上找到了一个简单的道路识别的opencvsharp的版本。我觉得opencvsharp真的是一个很好的东西,它封装了比opencv更多的数据结构和库,而且得益于.net平台的强大,使用起来也非常的便捷。唯一的缺点就是目前关于这方面的资料还是少之又少,后来我还是想一想把这个demo转换成cpp版本,也是一个非常简单的demo。 opencvsharp版本 using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using OpenCvSharp; namespace LaneDetection { class Program { [STAThread] static void Main() { CvCapture cap = CvCapture.FromFile("test1.mp4"); CvWindow w = new CvWindow("Lane Detection"); CvWindow canny = new CvWindow("Canny"); IplImage src, gray, dstCanny, halfFrame, smallImg; CvMemStorage storage = new CvMemStorage(); CvSeq lines; while (CvWindow.WaitKey(10) < 0) { src = cap.QueryFrame(); halfFrame = new IplImage(new CvSize(src.Size.Width / 2, src.Size.Height / 2), BitDepth.U8, 3); Cv.PyrDown(src, halfFrame, CvFilter.Gaussian5x5); gray = new IplImage(src.Size, BitDepth.U8, 1); dstCanny = new IplImage(src.Size, BitDepth.U8, 1); storage.Clear(); // Crop off top half of image since we're only interested in the lower portion of the video int halfWidth = src.Width / 2; int halfHeight = src.Height / 2; int startX = halfWidth - (halfWidth / 2); src.SetROI(new CvRect(0, halfHeight - 0, src.Width - 1, src.Height - 1)); gray.SetROI(src.GetROI()); dstCanny.SetROI(src.GetROI()); src.CvtColor(gray, ColorConversion.BgrToGray); Cv.Smooth(gray, gray, SmoothType.Gaussian, 5, 5); Cv.Canny(gray, dstCanny, 50, 200, ApertureSize.Size3); canny.Image = dstCanny; storage.Clear(); lines = dstCanny.HoughLines2(storage, HoughLinesMethod.Probabilistic, 1, Math.PI / 180, 50, 50, 100); for (int i = 0; i < lines.Total; i++) { CvLineSegmentPoint elem = lines.GetSeqElem<CvLineSegmentPoint>(i).Value; int dx = elem.P2.X - elem.P1.X; int dy = elem.P2.Y - elem.P1.Y; double angle = Math.Atan2(dy, dx) * 180 / Math.PI; if (Math.Abs(angle) <= 10) continue; if (elem.P1.Y > elem.P2.Y + 50 || elem.P1.Y < elem.P2.Y -50 ) { src.Line(elem.P1, elem.P2, CvColor.Red, 2, LineType.AntiAlias, 0); } } src.ResetROI(); storage.Clear(); w.Image = src; } } } } opencv版本 #include "stdafx.h" #include <highgui.h> #include <cv.h> #include <math.h> using namespace cv; using namespace std; #define INF 99999999 CvCapture* g_capture = NULL; int g_slider_pos = 0 ; int frame_count = 0; CvSeq* lines; int main(int argc,char* argv[]) { cvNamedWindow( "show"); g_capture=cvCreateFileCapture( "D:\\road.avi"); IplImage* frame; while(1) { CvMemStorage* storage = cvCreateMemStorage(); frame=cvQueryFrame(g_capture); //set the ROI of the original image int x = 0,y = frame->height/2; int width = frame->width,height = frame->height/2; if(!frame) break; cvSetImageROI(frame,cvRect(x,y,width,height)); IplImage* gray = cvCreateImage(cvGetSize(frame),8,1); cvCvtColor(frame,gray,CV_BGR2GRAY); cvCanny(gray,gray,50,100); cvShowImage("canny",gray); cvSmooth(gray,gray,CV_GAUSSIAN,3,1,0); //Hough lines = cvHoughLines2(gray,storage,CV_HOUGH_PROBABILISTIC,1,CV_PI/180,50,90,50); //select approprivate lines acoording to the slope for (int i = 0;i < lines->total;i ++) { double k =INF; CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i); int dx = line[1].x - line[0].x; int dy = line[1].x - line[0].y; double angle = atan2(dy,dx) * 180 /CV_PI; if (abs(angle) <= 10) continue; if (line[0].y > line[1].y + 50 || line[0].y < line[1].y - 50) { cvLine(frame,line[0],line[1],CV_RGB(255,0,0),2,CV_AA); } } cvResetImageROI(frame); cvShowImage( "show",frame); char c = cvWaitKey(33); if(c==27) break; } cvReleaseCapture(&g_capture); cvDestroyWindow( "show"); return 0; } 非常希望有弄这方面的人能和我讨论一下,若转载请注明出处,谢谢。

combox系列问题集

visual studio崩溃 你是不是经常会遇到一编辑combox,visual studio就会立马崩溃。一直都无法理解是什么原因,然后后来发现居然是因为有道的截屏翻译,关掉截屏翻译就好了。 combox绑定数据源 SqliteDataReader dr; if (dr.Read()) { this.comboBox1.Items.Add(dr[0]); } 自动补全的功能 我们希望在combox中实现输入的时候,有推荐的文本自动补全功能。我们主要只需要设置AutoCompleteMode和AutoCompleteSource这两个属性就可以了。 模糊查询 上面那个自动补全的功能只能实现从左到右进行匹配,而不能进行模糊匹配。假设我们的combobox里面有“张三“,如果输入”张“可以进行匹配,但是我们如果输入”三“的话就无法实现匹配,而combobox自身并没有这个属性,所以我们需要自己写一个方法来实现。 List<string> listOnit = new List<string>(); List<string> listNew = new List<string>(); //用于模糊查询 private void BindComboBox() { string str = "select License from tb_drug"; SQLiteDataReader sdr = sh.getcom(str); while (sdr.Read()) { if (sdr[0].ToString() != " " && sdr[0].ToString() != null) listOnit.Add(sdr[0].ToString()); } sdr.Close(); this.comboBox1.Items.AddRange(listOnit.ToArray()); } private void comboBox1_TextUpdate(object sender, EventArgs e) { this.comboBox1.Items.Clear(); listNew.Clear(); foreach (var item in listOnit) { if (item.Contains(this.comboBox1.Text)) { listNew.Add(item); } } this.comboBox1.Items.AddRange(listNew.ToArray()); this.comboBox1.SelectionStart = this.comboBox1.Text.Length; Cursor = Cursors.Default; this.comboBox1.DroppedDown = true; }

初识NuGet

因为想查一查opencvsharp的东西,然后发觉这个包可以再NuGet上面可以直接下载。我也经常在很多地方都可以看到NuGet,所以我想写下来,记录下来。 NuGet是一个免费的并且开源的包管理器在微软的开发平台上。NuGet发布在Visual Studio的拓展插件上。 NuGet现在已经移植到代码管理平台github了,链接地址为https://github.com/nuget/home。他们打算以后新的东西都在这个网址更新了。 资源 NuGet Gallery: http://nuget.org Documentation: http://docs.nuget.org Blog: http://blog.nuget.org Twitter: @nuget JabbR chat: https://jabbr.net/#rooms/nuget TeamCity continuous build server: http://build.nuget.org Latest successful VS Extension build: http://build.nuget.org/NuGet.Tools.vsix Latest successful NuGet.exe build: http://build.nuget.org/NuGet.exe NuGet貌似自从vs2012版本之后就默认在系统中了,所以不需要再安装了。如果想确保你的版本有没有安装NuGet,你可以看一下工具栏。你也可以在扩展和更新中可以进行NuGet的更新和管理。 只要你安装了,就可以非常方便的引用第三方的库,直接在引用里面添加就可以了。

回调函数

回调函数 在计算机程序设计中,回调函数,是指通过函数参数传递到其他代码的,某一块可执行代码的引用。这一设计允许了底层的代码调用高层的子程序。回调函数在.net平台中相当于委托。 回调函数的机制 定义一个回调函数。 提供函数实现的一方在初始化的时候,将回调函数的函数指针给调用者。 当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。 为什么要使用回调函数 因为可以把调用者和被调用者分开,所以调用者不关心谁是被调用者。它只需要知道存在一个具有特定原型和限制条件的被调用函数。 代码实现 下面创建了一个sort.dll的动态链接库,它导出了一个名为CompareFunction的类型–typedef int (__stdcall CompareFunction)(const byte,const byte*),它就是回调函数的类型。另外,它也导出了两个方法:Bubblesort()和Quicksort(),这两个方法原型相同,但实现了不同的排序算法。 void DLLDIR __stdcall Bubblesort(byte* array,int size,int elem_size,CompareFunction cmpFunc); void DLLDIR __stdcall Quicksort(byte* array,int size,int elem_size,CompareFunction cmpFunc); 这两个函数接受以下参数: ·byte * array:指向元素数组的指针(任意类型)。 ·int size:数组中元素的个数。 ·int elem_size:数组中一个元素的大小,以字节为单位。 ·CompareFunction cmpFunc:带有上述原型的指向回调函数的指针。 回调函数实例 int __stdcall CompareInts(const byte* velem1,const byte* velem2) { int elem1 = *(int*)velem1; int elem2 = *(int*)velem2; if(elem1 < elem2) return -1; if(elem1 > elem2) return 1; return 0; } int __stdcall CompareStrings(const byte* velem1,const byte* velem2) { const char* elem1 = (char*)velem1; const char* elem2 = (char*)velem2; return strcmp(elem1,elem2); } int main(int argc,char* argv[])

opencv视频流的读取和处理

Opencv提供一个简单易用的框架以提取视频文件和USB摄像头中的图像帧,如果只是想读取某个视频,你只需要创建一个VideoCapture实例,然后在循环中提取每一帧。下面是一个简单的代码 #include<opencv2\core\core.hpp> #include<opencv2\imgproc\imgproc.hpp> #include<opencv2\highgui\highgui.hpp> #include<iostream> using namespace cv; using namespace std; int main() { VideoCapture capture("d:\\road.avi"); //检测视频是否读取成功 if (!capture.isOpened()) { cout << "No input image"; return 1; } //获取图像帧率 double rate = capture.get(CV_CAP_PROP_FPS); bool stop = false; Mat frame; namedWindow("Example"); int delay = 1000/rate; while (!stop) { if (!capture.read(frame)) break; imshow("Example",frame); if (waitKey(delay) >= 0) stop = true; } return 0; } 要正确地打开视频文件必须确保电脑具有相应的解码器。同时也应该注意文件路径的未知是否正确,路径为止错误经常也会提示错误warning: Error opening file (../../modules/highgui/src/cap_ffmpeg_impl.hpp:545)。这个错误一般都是文件路径错误而导致的。 处理视频帧 为了对视频中的每一帧进行处理,我们可以创建自己的类VideoProcessor,其中封装OopenCV的视频获取框架,该类允许我们制定每帧调用的处理函数。 首先,我们希望制定一个回调处理函数,(关于回调函数,另外一个帖子http://blog.csdn.net/neal1991/article/details/45009377有介绍)。这个喊出可以接受一个Mat对象然后输出处理之后的Mat对象。 void processFrame(Mat& img, Mat& out); // 对视频的每帧做Canny算子边缘检测 void canny(Mat& img, Mat& out) { // 先要把每帧图像转化为灰度图 cvtColor(img,out,CV_BGR2GRAY); // 调用Canny函数 Canny(out,out,100,200); // 对像素进行翻转 threshold(out,out,128,255,THRESH_BINARY_INV); } 定义好一个视频处理类,它将与一个回调函数相关联。使用该类,可以创建一个实例,制定输入的视频文件,绑定回调函数,然后开始对每一帧进行处理,要调用这个视频处理类,只需要在main函数添加就可以了:

歌德巴赫猜想

题目 Description 歌德巴赫猜想,是指对于每一个大于4的偶数n,都能表示成两个质数之和。 现在,你需要写程序验证这一猜想。对于n,找出质数a和b, 满足a+b=n, a≤b,且a*b最大。例如n=8,满足条件的a和b分别为3和5; 又如n=10,质数3、7以及5、5满足a+b=n, a≤b,而乘积大的那组是5、5。 Input 每行一个偶数n(4 < n <= 20000) Output 对应于每个输入的偶数,输出a、一个空格、b、一个换行符 Sample Input 8 10 1000 Sample Output 3 5 5 5 491 509 代码 #include<stdio.h> #include<math.h> bool isPrime(int x); int main() { int n,i,j; while (scanf("%d",&n) != EOF) { for (i = n/2;i > 0;i -= 2) { if(i%2 == 0) i --; j = n - i; if(isPrime(i)&&isPrime(j)) { printf("%d %d\n",i,j); break; } } } return 0; } bool isPrime(int x) { int len = sqrt((float)x); for (int i = 2;i <= len;i ++) { if(x % i == 0) return false; } return true; }

道路识别

我们老板希望我能在道路识别这个方面做一些东西,这方面的东西一直在看,但是一直都是模模糊糊,我希望自己能够用一个合适的方式总结一下道路识别的问题。 道路识别问题其实也正正恰好是识别问题中的一个方面,所以道路识别问题的关键也是在于如何选取一个特征来进行识别。道路识别问题可以使用不同的方法来解决,我打算从下面这些方面来阐述一下我自己对道路识别的一个理解: 我们要解决什么情况下的道路问题 其实我觉得这点挺重要的,因为很多计算机视觉的问题在不同的要求之下有各种各样的方法。我觉得很有必要弄清楚自己需要的目标,我是要解决什么样的问题。道路识别问题可以分为结构化的道路和非结构化的道路。结构化的道路就是比较标准的道路,有着清晰地道路线,高速公路,城市公路,这些都是典型的结构化道路。而非结构化道路就是往往没有规则,没有明显的道路线或者根本没有道路线,显然,这样的道路识别比较复杂。因为我自己还是一个菜鸟,所以我一直以来看的问题都是针对结构化的道路。 我们用什么样的特征来识别道路 我们道路识别是通过道路的特征来识别道路,要么或者道路线,或者区域什么的。我们通常所使用的方法就是检测道路线,比如道路之间的道路线,或者道路边缘。特征,我觉得就可以分为多个特征,包括边缘特征,纹理特征,颜色特征等等。道路线的检测,往往相当于一个边缘检测的问题,往往是等同于直线的检测。所以霍夫变换经常是应用于道路检测中。 我们要以什么样的方法来解决道路识别问题 设想我们在汽车上设置一个摄像头,在不停的获取道路的实时数据。我们如何通过对道路视频进行实时的相应处理从而帮助我们驾驶。道路识别现如今已经慢慢应用到辅助驾驶系统中,在国外已经有一些不少的成熟应用,但只是至今还未达到高度商业化的地步。而且这个问题在未来的无人驾驶肯定也是有着一席之地。我所了解的基本都是基于对视频图像的处理从而来解决道路是别的问题。

计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接

转载:http://blog.csdn.net/carson2005/article/details/6601109 提示:本文为笔者原创,转载请注明出处:blog.csdn.net/carson2005 以下链接是本人整理的关于计算机视觉(ComputerVision, CV)相关领域的网站链接,其中有CV牛人的主页,CV研究小组的主页,CV领域的paper,代码,CV领域的最新动态,国内的应用情况等等。打算从事这个行业或者刚入门的朋友可以多关注这些网站,多了解一些CV的具体应用。搞研究的朋友也可以从中了解到很多牛人的研究动态、招生情况等。总之,我认为,知识只有分享才能产生更大的价值,真诚希望下面的链接能对朋友们有所帮助。 (1)googleResearch; http://research.google.com/index.html (2)MIT博士,汤晓欧学生林达华; http://people.csail.mit.edu/dhlin/index.html (3)MIT博士后Douglas Lanman; http://web.media.mit.edu/~dlanman/ (4)opencv中文网站; http://www.opencv.org.cn/index.php/%E9%A6%96%E9%A1%B5 (5)Stanford大学vision实验室; http://vision.stanford.edu/research.html (6)Stanford大学博士崔靖宇; http://www.stanford.edu/~jycui/ (7)UCLA教授朱松纯; http://www.stat.ucla.edu/~sczhu/ (8)中国人工智能网; http://www.chinaai.org/ (9)中国视觉网; http://www.china-vision.net/ (10)中科院自动化所; http://www.ia.cas.cn/ (11)中科院自动化所李子青研究员; http://www.cbsr.ia.ac.cn/users/szli/ (12)中科院计算所山世光研究员; http://www.jdl.ac.cn/user/sgshan/ (13)人脸识别主页; http://www.face-rec.org/ (14)加州大学伯克利分校CV小组; http://www.eecs.berkeley.edu/Research/Projects/CS/vision/ (15)南加州大学CV实验室; http://iris.usc.edu/USC-Computer-Vision.html (16)卡内基梅隆大学CV主页; http://www.cs.cmu.edu/afs/cs/project/cil/ftp/html/vision.html (17)微软CV研究员Richard Szeliski;http://research.microsoft.com/en-us/um/people/szeliski/ (18)微软亚洲研究院计算机视觉研究组; http://research.microsoft.com/en-us/groups/vc/ (19)微软剑桥研究院ML与CV研究组; http://research.microsoft.com/en-us/groups/mlp/default.aspx (20)研学论坛; http://bbs.matwav.com/ (21)美国Rutgers大学助理教授刘青山; http://www.research.rutgers.edu/~qsliu/ (22)计算机视觉最新资讯网; http://www.cvchina.info/ (23)运动检测、阴影、跟踪的测试视频下载; http://apps.hi.baidu.com/share/detail/18903287 (24)香港中文大学助理教授王晓刚; http://www.ee.cuhk.edu.hk/~xgwang/ (25)香港中文大学多媒体实验室(汤晓鸥); http://mmlab.ie.cuhk.edu.hk/ (26)U.C. San Diego. computer vision;http://vision.ucsd.edu/content/home (27)CVonline; http://homepages.inf.ed.ac.uk/rbf/CVonline/ (28)computer vision software; http://peipa.essex.ac.uk/info/software.html (29)Computer Vision Resource; http://www.cvpapers.com/ (30)computer vision research groups;http://peipa.essex.ac.uk/info/groups.html (31)computer vision center; http://computervisioncentral.com/cvcnews (32)浙江大学图像技术研究与应用(ITRA)团队:http://www.dvzju.com/ (33)自动识别网:http://www.autoid-china.com.cn/ (34)清华大学章毓晋教授:http://www.tsinghua.edu.cn/publish/ee/4157/2010/20101217173552339241557/20101217173552339241557_.html (35)顶级民用机器人研究小组Porf.Gary领导的Willow Garage:http://www.willowgarage.com/ (36)上海交通大学图像处理与模式识别研究所:http://www.pami.sjtu.edu.cn/ (37)上海交通大学计算机视觉实验室刘允才教授:http://www.visionlab.sjtu.edu.cn/ (38)德克萨斯州大学奥斯汀分校助理教授Kristen Grauman :http://www.cs.utexas.edu/~grauman/ 图像分解,检索 (39)清华大学电子工程系智能图文信息处理实验室(丁晓青教授):http://ocrserv.ee.tsinghua.edu.cn/auto/index.asp (40)北京大学高文教授:http://www.jdl.ac.cn/htm-gaowen/ (41)清华大学艾海舟教授:http://media.cs.tsinghua.edu.cn/cn/aihz (42)中科院生物识别与安全技术研究中心:http://www.cbsr.ia.ac.cn/china/index%20CH.asp (43)瑞士巴塞尔大学 Thomas Vetter教授:http://informatik.unibas.ch/personen/vetter_t.html