FW:看程序学OpenCV(1)

来源:互联网 发布:铁骑冲锋辅助软件 编辑:程序博客网 时间:2024/05/29 06:57

OpenCV模块

  • cv – 核心函数库
  • cvaux – 辅助函数库
  • cxcore – 数据结构与线性代数库
  • highgui – GUI函数库
  • ml – 机器学习函数库
  • OpenCV中的彩色图像不是以RGB的顺序存放的,而是BGR,所以程序中的outputImage.at<Vec3b>(i,j)[0]代表的是该点的B分量。同理还有(*it)[0]。

看程序学OpenCV(1)

http://hi.baidu.com/ihsauqaxblbdmwq/item/4643391b7a25be6870d5e869

1、显示一副图片
====================================================

#include<cv.h>

#include<highgui.h>

#include<cxcore.h>

int main(int argc, char** argv)
{
IplImage*img=cvLoadImage(argv[1]);//用cvLoadImage函数加载一副图片,返回类型为IplImage*
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);//用cvNamedWindow函数新建一个名为Example1的窗口,其大小根据图片的大小而定
cvShowImage("Example1",img);//用cvShowImage函数在窗口Example1中显示img
cvWaitKey(0);//用cvWaitKey函数来让程序等待无限期时间,直到有键按下
cvReleaseImage(&img);//用cvReleaseImage函数释放img所占的内存空间
cvDestroyWindow("Example1");//用cvDestroyWindow函数来销毁窗口Example1
return 0;//程序结束,返回0
}
需要记住:
1、用cvLoadImage来加载一副图片,返回类型为IplImage*类型
2、用cvNamedWindow来创建一个窗口,通常其窗口大小和显示图片大小一致即可
3、用cvShowImage来在一个窗口中显示一个图片(IplImage*类型的变量)
4、用cvWaitKey来让程序停止执行一段时间,若参数为0,则无限期停止,直到有键盘响应
5、用cvReleaseImage来释放一副图片所占的内存,其参数为IplImage*类型变量的内存地址
6、用cvDestroyWindow来销毁一个窗口,其参数为用cvNamedWindow创建窗口时的窗口名

2、显示一个AVI文件
======================================================

#include<cv.h>

#include<highgui.h>

#include<cxcore.h>

int main(int argc, char **argv)
{
cvNamedWindow("Example2",CV_WINDOW_AUTOSIZE);//用cvNamedWindow函数来创建一个名为Example2的窗口,其大小和显示图片的大小一致
CvCapture*capture=cvCreateFileCapture(argv[1]);//用cvCreateFileCapture函数将AVI文件的各帧读入到CvCapture*类型的变量里面
IplImage*frame;//AVI文件的每帧都为一副图片,因此需要定义一个IplImage*类型的变量来保存各帧的内容
while(1)
{
frame=cvQueryFrame(capture);//从CvCapture*类型的变量中取出一帧存放到frame中
if(!frame) break;//如果CvCapture*类型的变量中已经没有帧了,则frame为空
cvShowImage("Example2",frame);//用cvShowImage函数在窗口Example2中显示读入的一帧frame
char c=cvWaitKey(33);//暂停33毫秒,如果期间有键盘响应,则返回按键的ASCII值到c中
if(c==27) break;//如果按键是Esc键,那么退出循环,就是停止播放AVI视频文件
}
cvReleaseCapture(&capture);//用cvReleaseCapture函数来释放CvCapture*类型变量所占的内存
cvDestroyWindow("Example2");//用cvDestroyWindow函数来销毁窗口Example2
}
特殊说明:用cvQueryFrame获得帧图片frame不能用cvReleaseImage来释放,否则将造成不可想象的后果。
需要记住:
1、用cvCreateFileCapture来读入AVI文件,并将其内容的变量地址返回一个CvCapture*类型的变量;如果capture为空,则AVI文件读取失败,多数时候
是因为电脑上没有相应的解码器,建议安装K-lite Codec Pack。
2、用cvQueryFrame从CvCapture*类型的变量中读取一帧图片过来,如果读取到结尾时,返回为空
3、用cvWaitKey可以让程序等待一段时间,并且会返回按键的ASCII值
4、用cvReleaseCaputre来释放CvCapture*类型的变量所占的内存空间,其参数为CvCatpure*类型的变量的地址

Tags: OpenCV 
#c\c++\c#\.net
0 0
原创粉丝点击