天天看點

OPENCV筆記之2-如何擷取網絡攝像頭?

        前言:相信大家玩過opencv的都知道如何輕松地擷取USB攝像頭的資料,那就是一句簡單的VideoCapture就搞定了,但是如何擷取WIFI或者網絡攝像頭呢?考慮到大家遇到的問題都不一樣,我先來描述一下我遇到的問題:我在玩Arduino,但是發現Arduino在控制和算法這一塊好像不太好用,我更傾向于将Arduino稱為出色的硬體控制器。它往往隻能搭載很普通的幾個傳感器(超音波、語音子產品、加速度等),但是,我想玩攝像頭,我覺得機器人有了視覺可以做更多的事情。      
       電路連接配接:現手頭有Gl-inet路由器一台(刷機固件需要的我可以提供給大家,網上也有),一個攝像頭子產品(超便宜的那種),還有Arduino主要闆一塊,還有電腦(vs2013配置的opencv3.0)。電路連接配接如下:路由器子產品插上USB攝像頭,Arduino主要闆連接配接路由器子產品,上電。打開電腦,連接配接wifi信号。打開火狐浏覽器,輸入視訊位址,看能否監測到你的攝像頭。      

        如果可以,那麼打開vs2013,輸入以下代碼,稍等數秒後即可看到你的攝像頭畫面了。我需要說的是http://192.168.10.1:8080/?action=stream.mjpg這行代碼前半部分是你的視訊控制端口位址,後面的.mjpg是僞裝成圖檔格式,這樣opencv才會讀出來。 #include <opencv2\core\core.hpp>

#include <opencv2\highgui\highgui.hpp>

#include <opencv2/imgproc/imgproc.hpp>

#include <iostream>

using namespace cv;

using namespace std;

int main(int argc, char*argv[])

{

Mat src,grayvideo,blurvideo,cannyvideo;

VideoCapture video;

const string address = "http://192.168.8.1:8083/?action=stream.mjpg";

if (video.open(address));

{

for (;;)

{

video >> src;

cvtColor(src, grayvideo, COLOR_BGR2GRAY);

blur(grayvideo, blurvideo, Size(7, 7));

      Canny(blurvideo, cannyvideo, 0, 60, 3);

imshow("cannyvideo", cannyvideo);

imshow("Cam", src);

waitKey(1);  //延時30ms

}

}

return 0;

}

繼續閱讀