图像采集demo总结

原来没有养成写博客的习惯,都是自己写个文档,但是一旦文档多了起来,查看起来就很麻烦。
从今天开始,做出改变!!!

基本介绍

这个系统是我3月份实习的时候,老大让做的一个小项目(感觉像是本科大作业),能实现控制6个摄像头的同时开启关闭,截取图片或者视频,可以选择存储路径,点击保存后,会创建文件夹,该时刻的视频或者图片被保存,文件名为日期-video/日期-pic

Opencv的配置问题

网上的很多的博客都写的非常详细我就不再赘述,我用的是vs2010+opencv2.4.9,因为让我加了一个能够识别摄像头个数的,别人写好的库是opencv2版本的。

错误原因记录

  1. 加载图片路径不可过长
  2. MFC每一个控件ID其实是define的一个整数,想要遍历控件只需添加整数变量即可
  3. MFC在控制台输出信息
    AllocConsole();
    freopen( “CONOUT$”,“w”,stdout);
    printf(“i的值为%d\n”, (IDC_STATIC1+i));
    FreeConsole();
  4. 将opencv换成2.4.9后先是报没有opencv_core249.dll opencv_highgui249.dll错
    解决办法:从opencv安装文件夹找到这几个文件放到c:\windows\system32 和c:\windows\sysWow64下
  5. 运行 imread报错: 去项目属性的附加依赖项中删除d.dll文件
    视频videoWriter, open失败,将ffmeg_64.dll添加到c:\windows\system32 和c:\windows\sysWow64下

一些Tips

  1. _T是一个宏,他的作用是让你的程序支持unicode编码
  2. MFC在控制台输出信息
    AllocConsole();
    freopen( “CONOUT$”,“w”,stdout);
    printf(“i的值为%d\n”, (IDC_STATIC1+i));
    FreeConsole();
  3. opencv默认分辨率为640480,想要修改分辨率可以在打开摄像头的时候,给摄像头设定分辨率为19001080
    capture.set(CV_CAP_PROP_FRAME_WIDTH, 1900);
    capture.set(CV_CAP_PROP_FRAME_HEIGHT, 1080);
  4. immwrite保存图片质量
    https://www.cnblogs.com/skyfsm/p/7136709.html
  5. 程序中包含外部的库,确保他人能运行程序,需要在目录里加上程序用到的库(lib和include)并修改库目录和包含目录
  6. 面向对象编程要求线程是调用的接口必须是全局函数或静态成员函数
    https://blog.csdn.net/eqiang8271/article/details/23684149
  7. c++类中静态函数不能调用类中的非静态函数原因
    程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。
    类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;
    非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。
    在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一个内存中不存在的东西当然会出错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值