2014年5月5日:
任务:
我的任务是弄懂“人脸识别系统”,不过我更希望弄懂之后能够做出自己的东西。朝着这个目标努力吧。
12年的时候曾经接触过一周的人脸识别,不过那个时候一点头绪都没有,每天都是我们小组自己折腾,效率很低。不过经过那段时间我稍微接触了一点点的opencv。
遇到的问题与解决方法:
1、安装OpenCV:
接下来是Opencv的操作步骤,我是在百度上看到的,百度中的内容如下:
编译软件为 VS2010,opencv版本为2.4.9。操作系统为 XP.
在opencv中文网站上下载2.3.1版本后解压到D:\Program Files中。
一、设置环境变量
我的电脑--->右键--->属性--->高级--->环境变量--->在用户变量里,新建path
在path中添加D:\Program Files\opencv\build\x86\vc10\bin; D:\Program Files\opencv\build
二、设置 visual studio 2010 头文件、库文件。
打开VS2010,新建一个Win32 控制台应用程序,取名为 helloopencv
右击工程-->配置属性--->VC++目录--->包含目录文件中添加 d:\Program Files\OpenCV\build\include d:\Program Files\OpenCV\build\include\opencv d:\Program Files\OpenCV\build\include\opencv2
在配置属性--->VC++目录--->库目录中添加
d:\Program Files\OpenCV\build\x86\vc10\lib
添加lib库文件, 在配置debug里--->项目属性--->链接器--->输入--->附加依赖库 里加上
opencv_core249d.lib
opencv_highgui249d.lib
opencv_video249d.lib
opencv_ml249d.lib
opencv_legacy249d.lib
opencv_imgproc249d.lib
opencv_flann249d.lib
opencv_features2d249d.lib
opencv_calib3d249d.lib
opencv_objdetect249d.lib
opencv_contrib249d.lib
步骤6:在配置release里--->项目属性--->链接器--->输入--->附加依赖库 里加上
opencv_core249.lib
opencv_highgui249.lib
opencv_video249.lib
opencv_ml249.lib
opencv_legacy249.lib
opencv_imgproc249.lib
opencv_flann249.lib
opencv_features2d249.lib
opencv_calib3d249.lib
opencv_objdetect249.lib
opencv_contrib249.lib
将opencv 目录D:\Program Files\opencv\samples\c下的 lena.jpg 文件 拷贝到D:\My Documents\Visual Studio 2010\helloopencv\Debug
拷贝一段程序测试,复制到 helloopencv.cpp 中
#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
const char* imagename = "lena.jpg";
Mat img = imread(imagename);
if(img.empty()){
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
imshow("image", img);
waitKey();
return 0;
}
编译文件
在D:\My Documents\Visual Studio 2010\helloopencv\Debug目录下生成了 helloopencv.exe 文件,双击出现下图就证明搞定opencv的安装。
2、LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
解决方法:
a) 项目-->工程属性->配置属性-> 清单工具->输入和输出->嵌入清单,选择[否] ----------->只要设这个就可以了
b) 项目-->项目属性-->配置属性-->清单工具-->使用FAT32解决方法为 是
3、安装VS2012后结果使用VS2010时, 出现错误
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
解决方法:
To summarize:
Either disable incremental linking, by going to
Project Properties
-> Configuration Properties
-> Linker (General)
-> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
or install VS2010 SP1.
4、为什么我的电脑打开CHM文件无法显示内容
解决方法:
在CHM上右键——属性——解除锁定!
a) 检查下载的文件是否受损,下载的过程中是否被打断过。
b) 下载的文件本身的问题?请查看文件大小是否为零。
c) 您的系统目录下是否有HH.EXE这个文件(如:c:\windows下),这个文件用来打开CHM文件。如果有HH.EXE仍打不开,可能程序所需链接库文件受损;如果没有HH.EXE,拷贝一个过来或将系统覆盖安装一次。
d) “开始”-“运行”-“打开”内输入“regsvr32 /i hhctrl.ocx”
e) 将以下文本粘贴到文本编辑器(如记事本)中。然后用 .reg 文件扩展名保存该文件导入注册表.(注意先备份注册表)。
CODE:[Copy to clipboard]REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp.x\HHRestrictions]
"UrlAllowList"="\productmanuals\helpfiles;http://www.wingtiptoys.com/help/"
2014年5月6日:
今天的计划是:
1、看完一个半的章节(学习Opencv一书),做几个小程序,并且弄懂(每段代码5遍+)
2、把程序跑起来(pass)
3、毕业论文下载
遇到的问题:
1、在VS2010中,跑程序时遇到如下问题:(报错)
我还以为是程序的问题,结果不是,winocc.cpp不是工程里的文件。
百度上说是的指针的问题,结果也不是
后来师傅说“可能是工程下的dll资源版本不对或者不全”,最后在"C:\Windows\System32"下安装了相应的dll就可以运行了
2、每次新建一个工程的时候,都要重新配置Opencv,很麻烦,于是我就学习了一下vs2010中一次性配置Opencv2.4.9的方法
(以下内容是转载的):
1.下载OpenCV2.3.1 superpackage
2.配置环境变量
我的电脑--->右键--->属性--->高级--->环境变量--->在用户变量里,新建path和OPENCV两个项
步骤1:在path中添加 ~\OpenCV2.3\build\x86\vc10\bin,就是添加dll文件
步骤2:添加OPENCV的环境变量 ~\OpenCV2.3\build
3.配置vs2010 express
在"项目"->"属性"--->VC++目录--->包含目录文件中添加
~\OpenCV2.3\build\include
~\OpenCV2.3\build\include\opencv
~\OpenCV2.3\build\include\opencv2
"项目"->"属性"--->VC++目录--->库目录中添加
~\OpenCV2.3\build\x86\vc10\lib
步骤5 添加lib库文件, 在配置debug里 "项目"->"属性"--->链接器--->输入--->附加依赖库里加上 opencv_core231d.lib opencv_highgui231d.lib opencv_video231d.lib opencv_ml231d.lib opencv_legacy231d.lib opencv_imgproc231d.lib
步骤6:在配置release里--->项目属性--->链接器--->输入--->附加依赖库里加上 opencv_core231.lib opencv_highgui231.lib opencv_video231.lib opencv_ml231.lib opencv_legacy231.lib opencv_imgproc231.lib
一次性配置时
1.执行菜单栏“视图——其他窗口——属性管理器”,可以看到“属性管理器”显示在工作区左侧。
2双击Debug | Win32下的“Microsoft.Cpp.Win32.user“,在弹出的配置框中配置。这个设置是对所有工程有效的。你可以打开其他的工程或者新建新的工程,可以看到都继承了此配置。
注:有些程序需用到tbb函数,opencv2.3.1里opencv/build/commom里有tbb但不全,这里从tbb官网下载最新的tbb40_233oss_win.exe解压到你期望的位置。下面开始配置,步骤和配置opencv类似。
一、在环境变量中用户变量中PATH中添加D:\Program Files\tbb40_233oss\bin\ia32\vc10注意这里要和前面配置的opencv的path路径用分号(;)隔开。在系统的环境变量path中也做相同配置。
二、与配置opencv类似,对vc++目录下选项进行配置。
(1)可执行文件目录:
D:\Program Files\tbb40_233oss\bin\ia32\vc10
(2)Library Directories(库目录)
D:\Program Files\tbb40_233oss\lib\ia32\vc10
(3)Include Directories(包含目录)
D:\Program Files\tbb40_233oss\include
2014年5月7日:
今天的任务:
1、看到第二个章节结束,如果有时间可以看第三个章节的一半
2、修改毕业设计3、选择一个程序来做,定下初步的思路
今天的心情:
有点烦躁,不知道为什么感觉上午的时候会比较有精神,但是下午的时候就没什么精神了,今天花了很多时间看前两天学习的东西,导致今天没什么成果,以后不能这样,当天的事情要在当天复习完。
需要改正部分:
1、以后无论喜不喜欢做的事情,只要是在做事情都要投入百分百的精力下去,不要让自己后悔,每天的事情都要做好!!!!加油加油!!
2、向老爸学习,说到做到!加油加油!
遇到的问题:
1、在VS2010下运行不起来的程序,在Debug下的exe却可以运行的起来。
VS2010下面的:
Debug下的可执行文件:
哈哈,突然发现自己真是一个特别新的新手
嘿嘿,刚刚师傅帮我折腾了一下,居然是因为照片放的位置不正确,我勒个去~~~~~
不过为什么以前都不会报错呢~~~
2、今天学习的一个函数assert():
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:
#include<assert.h>
void assert(int expression);
assert的作用是现计算表达式expression,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调研abort来终止程序运行
assert()的缺点是:频繁调用会极大的影响程序的性能,增加额外的开销。在调试结束后,可以通过在包含#include<assert.h>的语句之前插入#define NDEBUG来禁用assert调用。代码如下:
#include<stdio.h>
#define NDEBUG
#include<assert.h>
注意:
1、不能使用改变环境的语句,因为assert只在DEBUG中生效,如果这么做会使程序在真正运行时遇到困难。
错误:assert(i++<100);//这是因为如果出错,比如在执行之前i=100,那么这条语句就不会执行,那么最终i++这条命令也不会执行。
正确:assert(i<100); i++;
2、有些地方,assert不能代替条件过滤
3、今天用到CvPyrDown这个函数的时候,出现了问题:
后来才发现是因为这个函数写错了
错误的:IplImage* out = cvCreateImage(cvSize(in->width,in->height),in->depth,in->nChannels);
正确的:IplImage* out = cvCreateImage(cvSize(in->width/2,in->height/2),in->depth,in->nChannels);
看来需要多大的Image就要创建多大的image,不要创建大了,也不要创建小了。
2014年5月8日
任务:
1.看完第二章的Opencv(ok)2.选择一个方面写程序,确定初步的思路
3.修改毕业设计(ok)
遇到的问题:
1、运行的时候出现:[cinepak@001ab780] cinepak_decode failed
暂时还不知道为什么
2014年5月9日
任务:
1、对程序进行学习,并且选择一个模块写程序
2、毕业论文修改(二)