opencv 啟動攝像頭 C++


原文:http://www.cnblogs.com/zkwarrior/p/4868991.html

 

http://blog.csdn.net/thefutureisour/article/details/7530177

 

在網上看了許多關於OpenCV啟動攝像頭的資料,但是,都是基於C語言的,代碼又臭又長,(其實主要是因為我學的OpenCV就是用C++的,C語言的基本數據結構不太熟悉),所以一直想找一個用C++寫的程序,最后讓我在OpenCV自帶的英文參考手冊上找見了,整個代碼30行都不到!nice啊!我對代碼做了一點修改,發上來吧!

  1. #include <opencv2/highgui/highgui.hpp>  
  2. #include <opencv2/imgproc/imgproc.hpp>  
  3. #include <opencv2/core/core.hpp>  
  4.   
  5. using namespace cv;  
  6.   
  7.   
  8. int main()  
  9. {  
  10.     VideoCapture cap(0);  
  11.     if(!cap.isOpened())  
  12.     {  
  13.         return -1;  
  14.     }  
  15.     Mat frame;  
  16.     Mat edges;  
  17.   
  18.     bool stop = false;  
  19.     while(!stop)  
  20.     {  
  21.         cap>>frame;  
  22.         cvtColor(frame, edges, CV_BGR2GRAY);  
  23.         GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);  
  24.         Canny(edges, edges, 0, 30, 3);  
  25.         imshow("當前視頻",edges);  
  26.         if(waitKey(30) >=0)  
  27.             stop = true;  
  28.     }  
  29.     return 0;  
  30. }  

對代碼的幾點說明:

1. VideoCapture類有兩種用法,一種是VideoCapture(const string& filename)用來打開視頻文件,一種是VideoCapture(int device)用來打開設備。

2. isOpened函數用來檢測VideoCapture類是否打開成功。

3. C++版本的OpenCV有一個明顯的好處,就是不需要釋放操作(不論是視頻還是圖片),VideoCapture類的析構函數會自動幫你完成。

由於本人長相丑陋,所以對攝像頭獲取的彩色圖像進行了一些簡單的處理:轉為灰度圖像、高斯濾波,邊沿檢測。這樣大家就不會受驚了,哈哈!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM