极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12256|回复: 9

OpenCV学习笔记之——初试

[复制链接]
发表于 2011-9-23 19:01:20 | 显示全部楼层 |阅读模式
本帖最后由 三水 于 2011-9-23 19:51 编辑

呃,网上的学习笔记好乱@@
还是自己边学边写吧。不然几个月后又忘记怎么弄了。

OpenCV如何在VS2010下配置的方法及OpenCV的介绍就不写了。
如有需要,再写如何配置的笔记。




第一个练习——【打开图片】


键入代码:

#include "stdafx.h"
#include "cv.h"
#include <cxcore.h>
#include <highgui.h>


int _tmain(int argc, _TCHAR* argv[])
{
        IplImage *img = cvLoadImage("funny-pictures.jpg");
        cvNamedWindow("Image:",1);
        cvShowImage("Image:",img);

        cvWaitKey();
        cvDestroyWindow("Image:");
        cvReleaseImage(&img);

        return 0;

}

程序运行后显示如下:

opencv初试

opencv初试




代码解析:
#include "stdafx.h"
#include "cv.h"
#include <cxcore.h>
#include <highgui.h>
引用不再解释,不太理解可详见c++ premier。稍后转录过来。

int _tmain(int argc, _TCHAR* argv[])
在main函数中定义一个argc用于读取输入参数个数,argv[]数组用于存放输入的参数。
如输入test  E:\jay.jpg,argc读取参数个数为2,argv[0]为test,而argv[1]中的E:\jay.jpg读出为E:\\jay.jpg。这个具体原因待整理。更多详见http://www.opencv.org.cn/index.p ... v%E8%AF%B4%E6%98%8E

IplImage *img = cvLoadImage("E:\lena.jpg");
此行代码是将图像加载到内存,cvLoadImage()函数通过文件名确定被加载文件的格式并自动分配图像所需内存。cvLoadImage()函数可以打开大部分常用图像格式,如BMP,JPEG,JPG,PNG等。该函数执行完后会返回一个指针,该指针指向描述图像文件数据结构IplImage分配的内存。E:\lena.jpg为指定图像所在地址,也可直接为lena.jpg,此处为程序默认储存地址([VS2010默认项目文件夹]\项目文件夹\项目文件夹  下)内的图片。lena.jpg原为大家图像都很熟悉的草帽女,但是我测试的时候没有去找就直接在e盘下重命名了张图片。

cvNamedWindow("Image:",1);
cvNamedWindow()函数将在屏幕上创建一个窗口用于显示图像。函数中第一个参数为窗口命名为"Image:",第二个参数为定义窗口属性,默认值为0,表示窗口大小不会因图像的大小而改变,图像将根据窗口大小进行变化充满窗口。为1或CV_WINDOW_AUTOSIZE时,窗口将根据图像的实际大小自动变化适应图像。

cvShowImage("Image:",img);
cvShowImage()函数通过第一个参数确定在已创建的哪个窗口中显示图像,且该函数被调用时窗口将被重绘并将图像显示到窗口中。

cvWaitKey();
函数功能为使程序暂停,等待触发按键。函数中参数为正值时,程序将暂停该整数值个毫秒后继续执行程序,没有按下按键也会如此。设置为0或者负数将一直等待用户触发按键。

评分

参与人数 1 +3 收起 理由
弘毅 + 3 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2011-9-23 19:14:01 | 显示全部楼层
我初试的是人脸识别…… 性格不够扎实
回复 支持 反对

使用道具 举报

发表于 2011-9-23 19:22:12 | 显示全部楼层
这个MM好甜。。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-23 19:52:04 | 显示全部楼层
支持-吴春光 发表于 2011-9-23 19:14
我初试的是人脸识别…… 性格不够扎实

我也有人脸识别的例程,我想一步一步学过去好了。这样熟悉一下基本的操作
回复 支持 反对

使用道具 举报

发表于 2011-9-23 22:48:16 | 显示全部楼层
本帖最后由 ardyPro 于 2011-9-23 23:07 编辑

如输入test  E:\jay.jpg,argc读取参数个数为2,argv[0]为test,而argv[1]中的E:\jay.jpg读出为E:\\jay.jpg。
===========
这个是不是跟C语言的转义有关?你把路径放深一点试一试呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-24 11:21:30 | 显示全部楼层
ardyPro 发表于 2011-9-23 22:48
如输入test  E:\jay.jpg,argc读取参数个数为2,argv[0]为test,而argv[1]中的E:\jay.jpg读出为E:\\jay.jpg ...

路径放深点它会自动编译为正确的,那段话后面的链接里有更详细的解释。
回复 支持 反对

使用道具 举报

发表于 2011-11-14 23:29:03 | 显示全部楼层
请上在VS2010配置OPENCV的教程。我配置了1天了。还是不能跑
回复 支持 反对

使用道具 举报

发表于 2012-2-20 15:17:18 | 显示全部楼层
vc++_2008和vc++_2010安装方法可参考:http://www.opencv.org.cn/index.p ... E8%A3%85OpenCV2.3.1
vs2010配置VC++目录可参考:http://blog.csdn.net/zhangyafengcpp/article/details/6847821
回复 支持 反对

使用道具 举报

发表于 2013-10-24 09:11:47 | 显示全部楼层
有详细的资料 下载吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-1-23 18:26 , Processed in 0.055600 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表