(11条消息) 【视觉

【计算机视觉】opencv 调用工业摄像机(USB接口和GigE接口)

第一次在CSDN写博客,有不到之处请指教,欢迎交流评论留言
开发环境为win7+VS2010+opencv (主要是操作系统windows,Linux还没尝试)

1 代码 opencv直接打开USB和GIgE摄像机

1.1 三种代码形式不同原理相同

方法一
  1. //---------------------------------【头文件、命名空间包含部分】----------------------------
  2. //描述:包含程序所使用的头文件和命名空间
  3. //-------------------------------------------------------------------------------------------------
  4. //#include "opencv2/video/tracking.hpp"
  5. #include "StdAfx.h"
  6. #include "opencv2/imgproc/imgproc.hpp"
  7. #include "opencv2/highgui/highgui.hpp"
  8. #include <iostream>
  9. #include <ctype.h>

  10. using namespace cv;
  11. using namespace std;

  12. //-----------------------------------【全局变量声明】-----------------------------------------
  13. //描述:声明全局变量
  14. //-----------------

  15. Mat image;
  16. Rect selection;
  17. //-----------------------------------【main( )函数】--------------------------------------------
  18. //描述:控制台应用程序的入口函数,我们的程序从这里开始
  19. //-------------------------------------------------------------------------------------------------
  20. int main()
  21. {

  22. VideoCapture cap;
  23. Rect trackWindow;
  24. cap.open(0);//0默认—摄像机,若用笔记本相机;1 --是USB有限,无USB就 网络,若用笔记本;-1选择多个相机界面

  25. if( !cap.isOpened() )
  26. {
  27. cout << "不能初始化摄像头\n";
  28. }
  29. namedWindow( "CamShift Demo", 0 );
  30. Mat frame;
  31. bool paused = false;
  32. 方法1
  33. //for(;;)
  34. //{
  35. //if( !paused )
  36. //{
  37. //cap >> frame;
  38. //if( frame.empty() )
  39. //break;
  40. //}
  41. //imshow( "CamShift Demo", frame);
  42. //}

  43. ////方法2
  44. while(1)
  45. {
  46. if( !paused )
  47. {
  48. cap >> frame;
  49. if( frame.empty() )
  50. break;
  51. }
  52. imshow( "CamShift Demo", frame ); //显示当前帧
  53. waitKey(30); //延时30ms
  54. }
  55. return 0;
  56. }


方法二
  1. // Camera2.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include "stdafx.h"
  4. #include <opencv2\opencv.hpp>
  5. using namespace cv;

  6. //-----------------------------------【main( )函数】--------------------------------------------
  7. //描述:控制台应用程序的入口函数,我们的程序从这里开始
  8. //-------------------------------------------------------------------------------------------------
  9. int main( )
  10. {
  11. //【1】从摄像头读入视频
  12. VideoCapture capture(1);
  13. //0默认—摄像机,若用笔记本相机;1 --是USB有限,无USB就 网络,若用笔记本;-1选择多个相机界面
  14. //【2】循环显示每一帧
  15. while(1)
  16. {
  17. Mat frame; //定义一个Mat变量,用于存储每一帧的图像
  18. capture>>frame; //读取当前帧
  19. if( frame.empty() )
  20. continue;
  21. imshow("读取视频",frame); //显示当前帧
  22. waitKey(30); //延时30ms
  23. }
  24. return 0;
  25. }




方法三

  1. // Camera3.cpp : 定义控制台应用程序的入口点。
  2. //

  3. #include "stdafx.h"
  4. #include <opencv2\opencv.hpp>
  5. using namespace cv;
  6. using namespace std;
  7. int main( )
  8. {
  9. VideoCapture capture(0);
  10. //0默认—摄像机,若用笔记本相机;1 --是USB有限,无USB就 网络,若用笔记本;-1选择多个相机界面

  11. while (1)
  12. {
  13. Mat frame;
  14. capture >> frame;
  15. if (! frame.empty())
  16. {
  17. imshow("最终结果", frame);
  18. }
  19. else
  20. cout << "can not ";//最后一帧的处理
  21. waitKey(30);
  22. }
  23. return(0);
  24. }


(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)

相关推荐

  • Python Opencv捕获视频

    先得安装这个opcv的库 注意选择的Python解释器 我这里还有一个解释器,是thonny的IDE的 装好以后可以看看版本 会发现是可以自动补全的 我们可以在本地的时候放一个图片,读取一下 impo ...

  • 上班摸鱼程序,再也不怕领导偷偷出现在身后了

    来源:Python 技术「ID: pythonall」 当你在上班摸鱼的时候,领导总会偷偷摸摸的出现在你的背后,例如小编曾经偷偷摸摸看<轻音>被抓包了.今天我们就用 Python 来破解这 ...

  • OpenCV探索之路(二):图像处理的基础知识点串烧

    opencv图像初始化操作 #include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp> using n ...

  • (8条消息) c++ opencv 照片清晰度

    上期文章,我们介绍了YOLOV4对象检测算法的模型以及基本知识,哪里还进行了图片的对象检测,如何使用YOLOV4进行视频检测与实时视频检测呢?毕竟我们绝大多数的需求必然是视频的实时对象检测 YOLOV ...

  • OpenCV探索之路(十一):轮廓查找和多边形包围轮廓

    Canny一类的边缘检测算法可以根据像素之间的差异,检测出轮廓边界的像素,但它没有将轮廓作为一个整体.所以要将轮廓提起出来,就必须将这些边缘像素组装成轮廓. OpenCV中有一个很强大的函数,它可以从 ...

  • (4条消息) YOLOV3+VS2015+OpenCV4.0实现目标检测

    接着上次网络通信的第二步,实现图像处理这部分的内容.处理后的图像送回到发送方.这一部分,尝试使用opencv自带的dnn模块中集成了darknet的函数,直接调用.本文也是借鉴网上大神的部分代码. # ...

  • OpenCV探索之路(十七):Mat和IplImage访问像素的方法总结

    在opencv的编程中,遍历访问图像元素是经常遇到的操作,掌握其方法非常重要,无论是Mat类的像素访问,还是IplImage结构体的访问的方法,都必须扎实掌握,毕竟,图像处理本质上就是对像素的各种操作 ...

  • 【从零学习OpenCV】 视频数据的读取&摄像头的直接调用

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习OpenCV 4>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • OpenCV探索之路(四):膨胀、腐蚀、开闭运算

    腐蚀和膨胀是最基本的形态学运算. 腐蚀和膨胀是针对白色部分(高亮部分)而言的. 膨胀就是对图像高亮部分进行"领域扩张",效果图拥有比原图更大的高亮区域:腐蚀是原图中的高亮区域被蚕食 ...

  • OpenCV探索之路(五):图片缩放和图像金字塔

    对图像进行缩放的最简单方法当然是调用resize函数啦! resize函数可以将源图像精确地转化为指定尺寸的目标图像. 要缩小图像,一般推荐使用CV_INETR_AREA来插值:若要放大图像,推荐使用 ...

  • (7条消息) OpenCV绘制文字、图形

    文章目录 一.文字putText 二.线line 三.矩形rectangle 四.圆circle 五.椭圆ellipse() color问题:图形的颜色会受到图像通道数的影响.如图像是灰度图,那么图形 ...

  • c 调用yolov4模型进行目标检测

    前言 yolo系列用c写的,在工程中的部署特别方便.4月份yolov4横空出世,之前试了试效果,精度确实有了很大的提升,AB大神nb.最近需要在C++项目中使用yolov4,尝试了opencv的调用( ...

  • [opencv]吊诡的摄像头黑屏

    #include <opencv2/core.hpp> #include <opencv2/videoio.hpp> #include <opencv2/highgui. ...