天天看点

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;

}

继续阅读