OpenCV学习笔记: 一 (20151109)

配置环境: win10 - 64位 , Opencv 3.0, VS2013

1.配置环境

http://demo.netfoucs.com/u013647382/article/details/42557479

2.测试代码:

代码1:

//测试
//显示图片
#include "highgui.h"

int main()
{
char* windowName = "显示图片";
IplImage* image = cvLoadImage("F:\Pictures\libao2.png");
cvNamedWindow(windowName, 1);
cvShowImage(windowName, image);
cvWaitKey(0);
cvDestroyWindow(windowName);
cvReleaseImage(&image);
return 0;
}

代码2:

//测试
//播放视频
#include "highgui.h"

int main()
{
char* windowName = "播放视频";
cvNamedWindow(windowName, CV_WINDOW_AUTOSIZE);
CvCapture* capture = cvCreateFileCapture("F:\Pictures\video.mp4");
IplImage* frame;
while (1)
{
frame = cvQueryFrame(capture);
if (!frame)
break;
cvShowImage(windowName, frame);
char c = cvWaitKey(33);//wait 33 ms
if (c == 27)//Esc
break;
}
cvReleaseCapture(&capture);
cvDestroyWindow(windowName);
return 0;
}

代码3: 

//测试
//视频播放控制
#include "cv.h"
#include "highgui.h"

int g_slider_positon = 0;
CvCapture* g_capture = NULL;

void OnTrackbarSlide(int pos)
{
//设置视频帧数
cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES,pos);
}
int main()
{
char* windowName = "视频播放控制";
cvNamedWindow(windowName, CV_WINDOW_AUTOSIZE);
g_capture = cvCreateFileCapture("F:\Pictures\video.mp4");
//获取视频帧数,创建滑动条
int frames = (int)cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT);
if (frames != 0)
{
cvCreateTrackbar("Position", windowName, &g_slider_positon, frames, OnTrackbarSlide);
}
IplImage* frame;
while (1)
{
frame = cvQueryFrame(g_capture);
if (!frame)
break;
cvShowImage(windowName, frame);
char c = cvWaitKey(33);//wait 33 ms
if (c == 27)//Esc
break;
}
cvWaitKey(0);
cvReleaseCapture(&g_capture);
cvDestroyWindow(windowName);
return 0;
}

代码4:

//测试
//对图像进行平滑处理
#include <cv.h>
#include <highgui.h>

void main()
{
char* windowInName = "图片平滑前";
char* windowOutName = "图片平滑后";
IplImage* image = cvLoadImage("F:\Pictures\libao2.png");
cvNamedWindow(windowInName);
cvNamedWindow(windowOutName);
cvShowImage(windowInName, image);
IplImage* out = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 3);

cvSmooth(image, out, CV_GAUSSIAN, 3, 3);
cvShowImage(windowOutName, out);
cvReleaseImage(&out);
cvWaitKey(0);
cvDestroyWindow(windowInName);
cvDestroyWindow(windowOutName);
}

代码5:

//测试
//创建一幅宽高为输入图像一半尺寸的图像
//确保图片像素的宽高都为偶数
#include "cv.h"
#include "highgui.h"

IplImage* dpPyrDown(IplImage* in, int filter = IPL_IMAGE_ROI)
{
assert(in->width % 2 == 0 && in->height % 2 == 0);
IplImage* out = cvCreateImage(CvSize(in->width / 2, in->height / 2), in->depth, in->nChannels);
cvPyrDown(in, out);
return out;
}
int main()
{
char* windowName = "压缩图像尺寸为原来的一半";
cvNamedWindow(windowName, CV_WINDOW_AUTOSIZE);
IplImage* image = cvLoadImage("F:\Pictures\libao2.png");
cvShowImage(windowName, dpPyrDown(image, 4));
cvWaitKey(0);
cvReleaseImage(&image);
cvDestroyWindow(windowName);
}

原文地址:https://www.cnblogs.com/sbCat/p/4949749.html