(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);
//}
////方法2
while(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);
}
else
cout << "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)