opencv下载
下载windows版本的opencv并且安装


直接设置opencv库的解压目录
解压完成后将opencv bin目录加入系统环境变量path,使系统找到运行时的动态链接库
程序
#include <iostream>
#include <opencv2\opencv.hpp>
// 主函数
int main(int argc, char* argv[])
{
double width = 0;
double height = 0;
double fps = 25;
cv::Mat frame;
cv::String WIN_NAME = "Camera";
cv::VideoCapture cap;
if (!cap.open(0)) // 打开 index = 0 的摄像头
return -1;
width = cap.get(CV_CAP_PROP_FRAME_WIDTH); // 获取摄像头图像的宽
height = cap.get(CV_CAP_PROP_FRAME_HEIGHT); // 获取摄像头图像的高
std::cout << "widht =" << width << std::endl;
std::cout << "heigt =" << height << std::endl;
std::cout<<"Press Esc to exit"<<std::endl;
cv::namedWindow(WIN_NAME); // 创建一个名为 Camera 的窗口
// 循环读取摄像头
for (;;) {
cap >> frame; // 获取摄像头图像
if (frame.empty())
break;
cv::imshow(WIN_NAME, frame); // 显示摄像头图像
if (cv::waitKey(1000/(int)fps) == 27) // 按下键盘的 Esc 退出
break;
}
cv::destroyAllWindows(); // 清理资源
return 0;
}
cvwaitkey理解
首先,在cvWaitKey(k)中,k的单位为毫秒,1000毫秒等于1秒,同时,根据资料的说明,在显示图像的时候,每秒显示27、28帧的时候,我们看到的视频是流畅的。同时采取25帧的话,k=1000/25=40。即,每处理完一帧后,程序会等待40毫秒才会读取下一帧;
显示图像,一般要在cvShowImage()函数后加一句cvWaitKey(),此时程序显示出图像后将暂停,等待接收一个键盘输入;若没有这句话,则显示图像的代码很快就执行过去了,所以要用cvWaitKey()来暂停。
显示视频时,一般用cvWaitKey(delay) delay是延时的ms数。表示显示一帧,然后等delay ms ,再显示下一帧。如果没有cvWaitKey的话, 那么循环里面的每个指令执行时间趋近于0.那么capture可能有10000帧图像, 播放完了, 结果你还没看到画面,就已经黑屏了
编译链接
g++ demo.c -ID:\libs\opencv\include -LD:\libs\opencv\x86\mingw\lib -lopencv_calib3d2412.dll -lopencv_contrib2412.dll -lopencv_core2412.dll -lopencv_features2d2412.dll -lopencv_flann2412.dll -lopencv_gpu2412.dll -lopencv_highgui2412.dll -lopencv_imgproc2412.dll -lopencv_legacy2412.dll -lopencv_ml2412.dll -lopencv_nonfree2412.dll -lopencv_objdetect2412.dll -lopencv_ocl2412.dll -lopencv_photo2412.dll -lopencv_stitching2412.dll -lopencv_superres2412.dll -lopencv_ts2412 -lopencv_video2412.dll -lopencv_videostab2412.dll
其中-I指定opencv的头文件目录,-L指定库文件目录,-l指定链接的库文件,根据opencv的安装位置而改变