天天看點

用opencv + vs2013來打開計算機攝像頭

前幾天用java的JMF來打開攝像頭,現在我用opencv來打開攝像頭。下面是操作的具體細節

1.下載下傳和安裝opencv

在官網opencv.org  下載下傳   OpenCV windows版下載下傳下來。(我下載下傳的是opencv-3.1.0.exe),下載下傳後安裝自動解壓,選擇安裝位置就行了。

2.配置環境變量

  計算機 > 右鍵屬性> 進階系統設定 >  環境變量>  系統變量

Path 下添加opencv 的路徑  如:…… opencv\build\x64\vc12\bin;

Opencv 3.1.0 版本隻有x64位的,這裡的vc12 = vs2013 ,根據自己安裝的vs版本來選擇

3.工程包含目錄配置

打開vs 2013 ,檔案>建立>項目  > visual C++   >Win32 控制台應用程式

用opencv + vs2013來打開計算機攝像頭

點選剛才建立的項目右鍵 >  添加>  建立項

用opencv + vs2013來打開計算機攝像頭

在視圖 >其他視窗> 打開屬性管理器

用opencv + vs2013來打開計算機攝像頭

點選項目->Debug|Win32->Microsoft.Cpp.Win32.User(右鍵屬性,或者輕按兩下)即可打開屬性頁面。

打開屬性頁面後,就是一番配置了。首先是在

一.通用屬性 > VC++目錄  >  包含目錄 

添加opencv安裝目錄中的... \opencv\bulid\include

二.  通用屬性  > VC++目錄  > 庫目錄

添加   ....opencv\build\x64\vc10\lib

三. 通用屬性  > 連結器 > 輸入 >附加的依賴項

opencv_world310d.lib   

如果編譯時出現; 子產品計算機類型“X86”與目标計算機類型“x64”沖突

解決辦法:

點選項目右鍵 >  屬性 > 把平台選為X64> 配置管理器 > 活動解決方案平台 選X64  (沒有就建立)> 然後在連接配接器 >進階  > 目标計算機 (MachineX64 )

配置完有時候需要重新開機計算機才生效

下面是打開攝像頭的代碼:

整體思路:

1)添加包含檔案opencv

2)建立對象,擷取視訊流

3)建立視窗,把擷取的視訊流顯示出來

4)如果關閉,就釋放擷取視訊流的對象

#include <opencv2\core\core.hpp>

#include <opencv2\highgui\highgui.hpp>

#include <opencv2\opencv.hpp>

using namespace cv;//命名空間

int main()

{

    VideoCapture capture(0);//建立VideoCapture對象

    if (!capture.isOpened())//判斷是否打開攝像頭,打開isOpened傳回ture

        return 1;

    bool stop(false);//定義一個用來停止循環的變量

    Mat frame;//用來存放讀取的視訊序列,承載每一幀的圖像 ,Mat類是用于儲存圖像以及其他矩陣資料的資料結構

    namedWindow("Camera");//建立一個視窗,顯示每一幀的視窗

    while (!stop)

    {

        if (!capture.read(frame))//如果沒有讀取到就中斷

        {

            break;

        }

        imshow("Camera", frame);//正常顯示,把擷取的視訊填充到視窗中

        char c = cvWaitKey(33);

        if (c == 32)break; //使用空格鍵來停止ASCII 為32

    }

    capture.release();//釋放

}

對于JMF  和opencv 來打開攝像頭,這兩個操作方法我都嘗試過,對于二者我說說自己的一些想法,在沒有做這個項目的時候,我認為很簡單的,但事實好像不是這樣,因為沒有頭緒,一切都是在網上找的資料,找了很多資料,又發現很多用不了,那個時候才感覺困難重重。但是還好我還是找到了解決方法。二者的環境安裝配置都是比較麻煩的。我是這樣認為的。對于JMF來說opencv感覺更不錯,代碼簡潔更清晰。

繼續閱讀