我是靠谱客的博主 谨慎乌龟,最近开发中收集的这篇文章主要介绍【视觉-摄像机1】opencv 调用工业摄像机(USB接口和GigE接口)【计算机视觉】opencv 调用工业摄像机(USB接口和GigE接口) 1 代码 opencv直接打开USB和GIgE摄像机2 常见摄像机工业说明,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
【计算机视觉】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 <opencv2opencv.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 <opencv2opencv.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默认—摄像机,若若用笔记本相机)
最后
以上就是谨慎乌龟为你收集整理的【视觉-摄像机1】opencv 调用工业摄像机(USB接口和GigE接口)【计算机视觉】opencv 调用工业摄像机(USB接口和GigE接口) 1 代码 opencv直接打开USB和GIgE摄像机2 常见摄像机工业说明的全部内容,希望文章能够帮你解决【视觉-摄像机1】opencv 调用工业摄像机(USB接口和GigE接口)【计算机视觉】opencv 调用工业摄像机(USB接口和GigE接口) 1 代码 opencv直接打开USB和GIgE摄像机2 常见摄像机工业说明所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复