本文中将列出opencv需常用的最小工程,以方便今后做测试用。

  工程环境为vs2010+opencv2.3.1

一、opencv读取图片并显示出来:


#include "stdafx.h"
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main(int argc,unsigned char* argv[])
{
Mat img_src;
for (;;)
{
img_src=imread("lena.jpg");
imshow("lena_show",img_src);
waitKey(30);
}
return 0;
}



二、opencv读取avi文件并显示出来:

  注意有些avi格式的视频是读不出来的。


#include "stdafx.h"
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main(int argc,unsigned char* argv[])
{
Mat img_src;
VideoCapture vido_file("tree.avi");
for (;;)
{
vido_file >>img_src;
imshow("video_src",img_src);//可以事先不用新建一个窗口
char c=(char)waitKey(47);
if (c==27)
{
break;
}
}
return 0;
}



三、opencv驱动摄像头并显示出来:


#include "stdafx.h"
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main(int argc,unsigned char* argv[])
{
Mat img_src;
VideoCapture cam(0);
for (;;)
{
cam >>img_src;
imshow("camera",img_src);//可以事先不用新建一个窗口
char c=(char)waitKey(30);
if (c==27)
{
break;
}
}
return 0;
}



四、opencv打开摄像头并对摄像头内视频进行canny边缘检测。

   以下的环境改为:opencv2.4.2+vs2010


// cam_test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

#pragma comment( lib, "opencv_core242.lib" )
#pragma comment( lib, "opencv_highgui242.lib" )
#pragma comment( lib, "opencv_imgproc242.lib" )

using namespace cv;
using namespace std;

int main( int argc, const char **argv )
{

VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}



五、矩阵方式 resize图像缩放代码



double scale=0.5; //设置缩放倍数
string imageurl = "F:/opencv/samples/cpp/baboon.jpg";
Mat image =imread(imageurl);Â
//缩放
Size dsize = Size(image.cols*scale,image.rows*scale);
Mat image2 = Mat(dsize,CV_32S);
resize(image, image2,dsize);


首先定义scale变量,图片要缩放的倍数。



然后用Mat函数创建image矩阵,并加载图像。



Size函数是设置图像框架大小



resize函数调整图片大小。