前言: 因為 3/13 及 3/20 會邀請 Heresy 老師來授課,授課內容是 OpenNI 2 + NiTE 2 配合 OpenCV 來寫程式, 所以今天上課,要先針對 OpenCV 及 Visual C++ 進行教學
今天任務:
1. Visual C++ 寫程式 (新增專案)
2. 下載/安裝 OpenCV (要注意 Add OpenCV to PATH)
http://sourceforge.net/projects/opencvlibrary/?source=dlp
3. 使用 Visual C++ 寫 OpenCV 程式 (練習設定 OpenCV 的目錄、Link Input 檔案)
3.1. Include 目錄 增加 C:\OpenCV2.1\include
3.2. Lib 目錄 增加 C:\OpenCV2.1\lib
3.3. Link Input 增加 cv210.lib; cxcore210.lib; highgui210.lib
4. 使用 OpenCV 得到視訊畫面
TODO: 開啟 Visual C++
Visual Studio 2010的 Visual C++
1.1. TODO: 下載/安裝 OpenCV
2. 新增專案, Win32 主控台
3.0. 寫 OpenCV 程式碼讀圖檔
3.1. Include 目錄 (小心, c:\opencv2.1\include;
3.2. Lib 目錄 (小心, c:\opencv2.1\lib;
3.3. 設定 Link 的 Input 加入 cxcore210.lib; cv210.lib; highgui210.lib
圖片:
自己的小問題:如果會有找不到 cxcore210.lib; cv210.lib; highgui210.lib重新開啟visual studio,可以解決問題
不要忘了打副檔名
// pic.cpp : 定義主控台應用程式的進入點。
//
#include "stdafx.h"
#include <opencv\highgui.h>
int _tmain(int argc, _TCHAR* argv[])
{
IplImage * img=cvLoadImage("c:/Hydrangeas.jpg");
cvShowImage("window", img);
cvWaitKey(0);
return 0;
}
視訊:
// camera.cpp : 定義主控台應用程式的進入點。
//
#include "stdafx.h"
#include <opencv/highgui.h>
int _tmain(int argc, _TCHAR* argv[])
{
CvCapture * cap = cvCreateCameraCapture(0);
IplImage * img=cvQueryFrame(cap);
while(1){
img=cvQueryFrame(cap);
cvShowImage("img", img);
int key =cvWaitKey(33);
if(key==27)break;
}
cvReleaseCapture(&cap);
return 0;
}
畫框:
#include "stdafx.h"
#include <opencv/highgui.h>
#include <opencv/cv.h>
int _tmain(int argc, _TCHAR* argv[])
{
CvCapture * cap = cvCreateCameraCapture(0);
IplImage * img=cvQueryFrame(cap);
IplImage * photoframe=cvLoadImage("c:/photo_frame.bmp");
//cvShowImage("photo",photoframe);
IplImage * mask=cvCreateImage(cvGetSize(photoframe), IPL_DEPTH_8u,1);
cvInRangeS(photoframe, cvScalar(254,254,254), cvScalar(256,256,256),mask);
cvNot(mask,mask);
//cvShowImage("mask",mask);
IplImage * result=cvCloneImage(photoframe);
while(1){
img=cvQueryFrame(cap);
//cvShowImage("cap", result);
cvResize(img, result);
//cvShowImage("result", result);
cvCopy(photoframe,result,mask);
cvShowImage("img", result);
int key =cvWaitKey(33);
if(key==27)break;
}
cvReleaseCapture(&cap);
return 0;
}