(11条消息) 【视觉
【计算机视觉】opencv 调用工业摄像机(USB接口和GigE接口)
第一次在CSDN写博客,有不到之处请指教,欢迎交流评论留言开发环境为win7+VS2010+opencv (主要是操作系统windows,Linux还没尝试)
1 代码 opencv直接打开USB和GIgE摄像机
1.1 三种代码形式不同原理相同
方法一
//---------------------------------【头文件、命名空间包含部分】----------------------------//描述:包含程序所使用的头文件和命名空间//-------------------------------------------------------------------------------------------------//#include "opencv2/video/tracking.hpp"#include "StdAfx.h"#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include <iostream>#include <ctype.h>using namespace cv;using namespace std;//-----------------------------------【全局变量声明】-----------------------------------------//描述:声明全局变量//-----------------Mat image;Rect selection;//-----------------------------------【main( )函数】--------------------------------------------//描述:控制台应用程序的入口函数,我们的程序从这里开始//-------------------------------------------------------------------------------------------------int main(){VideoCapture cap;Rect trackWindow;cap.open(0);//0默认—摄像机,若用笔记本相机;1 --是USB有限,无USB就 网络,若用笔记本;-1选择多个相机界面if( !cap.isOpened() ){cout << "不能初始化摄像头\n";}namedWindow( "CamShift Demo", 0 );Mat frame;bool paused = false;方法1//for(;;)//{//if( !paused )//{//cap >> frame;//if( frame.empty() )//break;//}//imshow( "CamShift Demo", frame);//}////方法2while(1){if( !paused ){cap >> frame;if( frame.empty() )break;}imshow( "CamShift Demo", frame ); //显示当前帧waitKey(30); //延时30ms}return 0;}
方法二// Camera2.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <opencv2\opencv.hpp>using namespace cv;//-----------------------------------【main( )函数】--------------------------------------------//描述:控制台应用程序的入口函数,我们的程序从这里开始//-------------------------------------------------------------------------------------------------int main( ){//【1】从摄像头读入视频VideoCapture capture(1);//0默认—摄像机,若用笔记本相机;1 --是USB有限,无USB就 网络,若用笔记本;-1选择多个相机界面//【2】循环显示每一帧while(1){Mat frame; //定义一个Mat变量,用于存储每一帧的图像capture>>frame; //读取当前帧if( frame.empty() )continue;imshow("读取视频",frame); //显示当前帧waitKey(30); //延时30ms}return 0;}
方法三
// Camera3.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <opencv2\opencv.hpp>using namespace cv;using namespace std;int main( ){VideoCapture capture(0);//0默认—摄像机,若用笔记本相机;1 --是USB有限,无USB就 网络,若用笔记本;-1选择多个相机界面while (1){Mat frame;capture >> frame;if (! frame.empty()){imshow("最终结果", frame);}elsecout << "can not ";//最后一帧的处理waitKey(30);}return(0);}
(PS VideoCapture capture(1);//1 --是USB有限,无USB就 网络,若用笔记本;-1选择多个相机界面;0默认—摄像机,若用笔记本相机)
其实0,1……的设备ID号看WIN7下设备管理器—图像设备,对应的搜引号,从0开始。

1.2 VideoCapture的参考文档介绍

2 常见摄像机工业说明
2.1根据摄像机接口分为USB接口和GigE接口。
(PS1笔记本电脑认为是没有接口的,调用时看ID号,一般为0,)
2.2根据需要安装相关驱动分为带驱动和免驱动。
(PS二次开发(opencv调用时)安装相关驱动参考SDK,其实在win7下设备管理器下能显示的一般能直接调用)
现在贴出博主主要用过的工业相机:



有表达不足,或错误之处还清指正。
(PS VideoCapture capture(1);//1 --是USB有限,无USB就 网络,若用笔记本;-1选择多个相机界面;0默认—摄像机,若若用笔记本相机)
赞 (0)
