【视觉-摄像机1】opencv 调用工业摄像机(USB接口和GigE接口)
opencv
OpenCV: 开源计算机视觉库
项目地址:https://gitcode.com/gh_mirrors/opencv31/opencv
免费下载资源
·
【计算机视觉】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默认—摄像机,若若用笔记本相机)
GitHub 加速计划 / opencv31 / opencv
77.38 K
55.71 K
下载
OpenCV: 开源计算机视觉库
最近提交(Master分支:2 个月前 )
c3747a68
Added Universal Windows Package build to CI. 8 天前
9b635da5 - 8 天前
更多推荐
已为社区贡献10条内容
所有评论(0)