OpenCV学习笔记(一)初探OpenCV,显示我的照片
2014-02-13 13:04
281 查看
接下来,我准备写一下我在学习OpenCV中得点点滴滴。当前我的操作系统环境为MacOS 10.9.1,IDE为Xcode 5.0.2。如果开发环境发生变化,我会在笔记的开头进行指出。所以,如果是在WIndows中进行开发的同学,注意一下头文件引用就行了。至少,目前我还只发现头文件的区别。
如何在Xcode中搭建OpenCV开发环境,参考我上一篇文章:在Xcode中搭建OpenCV开发环境。
准备把这个笔记写成一个系列,笔记结构也会相对来说比较统一。基本上都是开头一段描述性的话,然后直接上代码。要说的,都写在注释里面。这样,如果需要代码的拿去就能用了。并且,注释也不用怎么写了。我以前就一直拿别人的代码,粘贴到自己的项目中,可能过一段时间review的时候,真的就不知道有些代码什么意思了。我是这么想的,希望在快节奏的开发中,这点能为大家带来方便。
准备、复制、粘贴……
//
// main.cpp
// TestOpenCV
//
// Created by HuangYiwei on 14-2-9.
// Copyright (c) 2014年 HuangYiwei. All rights reserved.
//
#include "opencv2/highgui/highgui.hpp"
using namespace std;
int main(int argc, const char * argv[])
{
/*
IplImage:包含图片信息描述的一个数据结构,这也是在OpenCV中最常用到的一个数据结构。
cvLoadImage:高层调用接口,通过文件名确定文件格式,并自动分配内存空间。目前,支持的文件格式有:BMP、DIB、JPEG、JPE、PNG、PBM、PGM、PPM、SR、RAS和TIFF文件。该函数执行完成后,返回一个指针,指向一块为描述该图像文件的数据结构。第一个参数很明显是一个路径,第二个参数是载入图片的颜色模式,用的默认值,暂时还没搞清楚这个参数是干啥的。我猜可能是控制颜色空间或者深度之类的。
*/
IplImage* img = cvLoadImage("/Users/huangyiwei/Desktop/屏幕快照 2014-02-09 9.14.49.png", CV_LOAD_IMAGE_COLOR);
/*
cvNamedWindow:创建一个可以放置图像和trackbar的窗口。被创建的窗口可以通过它们的名字被引用。 如果已经存在这个名字的窗口,这个函数将不做任何事情。第一个参数是窗口名称,第二个参数是制定窗口大小如何控制,可以手动控制大小、全屏大小、自动大小等。我用的是自动大小,就是根据窗口里面的内容自动调节大小。
*/
cvNamedWindow("picture", CV_WINDOW_AUTOSIZE);
/*
cvShowImage:在指定的窗口中显示图片,第一个参数为窗口名称,第二个参数为包含图片描述信息的数据结构指针。
*/
cvShowImage("picture", img);
/*
cvWaitKey:不断刷新图像,此函数接受一个参数,作用为指定每幅图片之间的间隔时间。这个函数是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用,除非HighGUI被用在某些能够处理事件的环境中。比如在MFC环境下,这个函数不起作用。如果程序想响应某个按键,可利用if(cvWaitKey(1)==Keyvalue),意思是1ms内如果有按键并且按键值等于Keyvalue。
*/
cvWaitKey(0);
/*
cvReleaseImage:释放刚才载入图像的内存空间(也即这个图像在内存中已经不存在了),同时img指针的值置为NULL。
*/
cvReleaseImage(&img);
/*
cvDestroyWindow:销毁一个窗口,并且释放该窗口所占用的所有内存。一共需要传递一个参数,用来指定需要销毁的窗口名称。
*/
cvDestroyWindow("picture");
return 0;
}
如何在Xcode中搭建OpenCV开发环境,参考我上一篇文章:在Xcode中搭建OpenCV开发环境。
准备把这个笔记写成一个系列,笔记结构也会相对来说比较统一。基本上都是开头一段描述性的话,然后直接上代码。要说的,都写在注释里面。这样,如果需要代码的拿去就能用了。并且,注释也不用怎么写了。我以前就一直拿别人的代码,粘贴到自己的项目中,可能过一段时间review的时候,真的就不知道有些代码什么意思了。我是这么想的,希望在快节奏的开发中,这点能为大家带来方便。
准备、复制、粘贴……
//
// main.cpp
// TestOpenCV
//
// Created by HuangYiwei on 14-2-9.
// Copyright (c) 2014年 HuangYiwei. All rights reserved.
//
#include "opencv2/highgui/highgui.hpp"
using namespace std;
int main(int argc, const char * argv[])
{
/*
IplImage:包含图片信息描述的一个数据结构,这也是在OpenCV中最常用到的一个数据结构。
cvLoadImage:高层调用接口,通过文件名确定文件格式,并自动分配内存空间。目前,支持的文件格式有:BMP、DIB、JPEG、JPE、PNG、PBM、PGM、PPM、SR、RAS和TIFF文件。该函数执行完成后,返回一个指针,指向一块为描述该图像文件的数据结构。第一个参数很明显是一个路径,第二个参数是载入图片的颜色模式,用的默认值,暂时还没搞清楚这个参数是干啥的。我猜可能是控制颜色空间或者深度之类的。
*/
IplImage* img = cvLoadImage("/Users/huangyiwei/Desktop/屏幕快照 2014-02-09 9.14.49.png", CV_LOAD_IMAGE_COLOR);
/*
cvNamedWindow:创建一个可以放置图像和trackbar的窗口。被创建的窗口可以通过它们的名字被引用。 如果已经存在这个名字的窗口,这个函数将不做任何事情。第一个参数是窗口名称,第二个参数是制定窗口大小如何控制,可以手动控制大小、全屏大小、自动大小等。我用的是自动大小,就是根据窗口里面的内容自动调节大小。
*/
cvNamedWindow("picture", CV_WINDOW_AUTOSIZE);
/*
cvShowImage:在指定的窗口中显示图片,第一个参数为窗口名称,第二个参数为包含图片描述信息的数据结构指针。
*/
cvShowImage("picture", img);
/*
cvWaitKey:不断刷新图像,此函数接受一个参数,作用为指定每幅图片之间的间隔时间。这个函数是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用,除非HighGUI被用在某些能够处理事件的环境中。比如在MFC环境下,这个函数不起作用。如果程序想响应某个按键,可利用if(cvWaitKey(1)==Keyvalue),意思是1ms内如果有按键并且按键值等于Keyvalue。
*/
cvWaitKey(0);
/*
cvReleaseImage:释放刚才载入图像的内存空间(也即这个图像在内存中已经不存在了),同时img指针的值置为NULL。
*/
cvReleaseImage(&img);
/*
cvDestroyWindow:销毁一个窗口,并且释放该窗口所占用的所有内存。一共需要传递一个参数,用来指定需要销毁的窗口名称。
*/
cvDestroyWindow("picture");
return 0;
}
相关文章推荐
- OpenCV(C++接口)学习笔记1-图像读取、显示、保存
- OpenCV学习笔记(1)——显示图片
- openCV学习笔记-Mat类的七种显示创建
- OpenCV学习笔记(二):OpenCV3.0 AKAZE特征检测与显示
- opencv学习笔记----浅析图像的载入,显示和输出
- OpenCV 2 学习笔记(3): 一个简单的opencv程序:在Console上显示图像
- 【OpenCV学习笔记】【函数学习】十一(读入图像﹑显示图像和保存图像)
- 《学习opencv》学习笔记 - 第三章 初探opencv
- openCV Python学习笔记(一)图片的读入,显示与保存
- Qt5--学习笔记-+openCV2-客户端、服务端回环视频显示
- OpenCV(C++接口)学习笔记1-图像的读取、显示、保存
- Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示
- Opencv学习笔记(2)模块,图像读取、显示、叠加、融合、颜色分离、亮度、对比度
- OpenCV学习笔记01--图像和视频的显示
- OpenCV学习笔记8_ShowROI_显示感兴趣区域
- OpenCV 学习笔记(1)安装设置、显示图像
- OpenCV 学习笔记(1)显示图像
- 【基于C++和Python的Opencv3学习笔记之图像载入、显示和保存】
- OpenCV学习笔记之一:OpenCV中显示图片(VS2010+OpenCV3.0版本)
- openCV学习笔记(5):使用sprintf函数实现在窗口连续显示同一文件夹下的图片