一种粗略的普通摄像头深度信息提取方法

1437人阅读 评论(1) 收藏 举报
分类:

在这儿介绍一种粗略的普通摄像头深度信息提取方法,很简单,也很实用

“近者大而远者小”,根据目标物体的大小,可以粗略判断出物体的远近

 

我这里有一个简单的应用,控制图片的大小

视频演示:http://v.youku.com/v_show/id_XMjM2NDk4ODMy.html

 

截图:

 

 

大家可以自己试试看。

也可以下载代码:http://download.csdn.net/source/2979410

 

或者简单看一下:

[cpp] view plain copy
  1. int main(int argc,char** argv)  
  2. {  
  3.     CvCapture* capture=cvCreateCameraCapture(-1);  
  4.     if (!capture){  
  5.         cout<<"failed to open camera"<<endl;  
  6.         exit(0);  
  7.     }  
  8.     //image for show  
  9.     IplImage* img=cvLoadImage("Song.jpg");  
  10.     if (!img){  
  11.         cout<<"failed to load image"<<endl;  
  12.         exit(0);  
  13.     }  
  14.     CvSize showSize=cvGetSize(img);  
  15.   
  16.     //processing window size  
  17.     const CvSize winSizeProcess=cvSize(320,240);  
  18.     IplImage* imgColor=cvCreateImage(winSizeProcess,8,3);  
  19.     IplImage* imgGray=cvCreateImage(winSizeProcess,8,1);  
  20.       
  21.     int threshold=140;  
  22.     cvNamedWindow("processing");  
  23.     cvMoveWindow("processing",0,0);  
  24.     cvCreateTrackbar("threshold","processing",&threshold,200,NULL);  
  25.   
  26.     int oldImgErea=-1;  
  27.   
  28.     bool isZooming=false;  
  29.     IplImage* imgHand;  
  30.     while (imgHand=cvQueryFrame(capture)){  
  31.         cvResize(imgHand,imgColor);  
  32.         cvCvtColor(imgColor,imgColor,CV_RGB2YCrCb);  
  33.         cvSplit(imgColor,NULL,NULL,imgGray,NULL);  
  34.         cvThreshold(imgGray,imgGray,threshold,255,CV_THRESH_BINARY);  
  35.   
  36.         cvShowImage("processing",imgGray);  
  37.   
  38.         if (isZooming){  
  39.             cvErode(imgGray,imgGray);  
  40.             cvDilate(imgGray,imgGray);  
  41.   
  42.             CvTarget target;  
  43.             cvFindTarget(imgGray,target);  
  44.             if (target.erea>HandEreaThreshold){  
  45.                 float scale=1.0f;  
  46.                 if (oldImgErea>0){  
  47.                     scale=(float)target.erea/oldImgErea;      
  48.                 }  
  49.                 oldImgErea=target.erea;   
  50.   
  51.                 showSize.width*=scale;  
  52.                 showSize.height*=scale;   
  53.                 //in defense of limit extreme situation  
  54.                 if (showSize.width<4||showSize.height<4||  
  55.                     showSize.width>2000||showSize.width>2000){  
  56.                     showSize=cvGetSize(img);  
  57.                 }  
  58.             }  
  59.         }  
  60.           
  61.         IplImage* imgResized=cvCreateImage(showSize,8,3);  
  62.         cvResize(img,imgResized);  
  63.   
  64.         static int screenWidth=1024;  
  65.         static int screenHeight=768;  
  66.         cvMoveWindow("image",(screenWidth-showSize.width)>>1,(screenHeight-showSize.height)>>1);  
  67.         cvShowImage("image",imgResized);  
  68.           
  69.         cvReleaseImage(&imgResized);  
  70.         int keyPressed=cvWaitKey(3);  
  71.         if(keyPressed==27){  
  72.             break;  
  73.         }else if (keyPressed==' '){//start/strop zooming  
  74.             isZooming=!isZooming;  
  75.         }  
  76.     }  
  77.     cvReleaseImage(&img);  
  78.     cvReleaseCapture(&capture);  
  79.     return 0;  
  80. }  

查看评论

单目摄像机提取物体深度信息

  • 2013年08月15日 13:18
  • 40.39MB
  • 下载

深度摄像头测距原理简介

深度检测主要技术方法: 1.双目匹配(双RGB摄像头+可选的照明系统) 三角测量原理即目标点在左右两幅视图中成像的横坐标之间存在的差异(视差Disparity),与目标点到成像平面的距离成反比例的关系...
  • jaylinzhou
  • jaylinzhou
  • 2017-04-26 17:49:07
  • 7557

几种深度摄像头简介

随着微软kinect(natal)的发展,深度摄像头吸引越来越多人的目光,深度摄像头可以用在人体跟踪,三维重建,人机交互,SLAM等等领域。但是深度摄像头的高昂的价格实在是让一般人望而却步,我所知道的...
  • hualitlc
  • hualitlc
  • 2014-09-15 11:27:27
  • 5332

深度图像的获取原理

在计算机视觉系统中,三维场景信息为图像分割、目标检测、物体跟踪等各类计算机视觉应用提供了更多的可能性,而深度图像(Depth map)作为一种普遍的三维场景信息表达方式得到了广泛的应用。深度图像的每个...
  • u012017783
  • u012017783
  • 2017-04-09 19:55:02
  • 16432

活体摄像头与iphoneX人脸摄像头

活体摄像头与iphoneX的人脸识别 的区别 活体摄像头的原理: 双目摄像头一个椒可见光摄像头、一个是近红外摄像头 我们同时检测两个摄像头下有没有人脸,提取视频中renlian,计算图像序列中的像素强...
  • keyanxiaocaicai
  • keyanxiaocaicai
  • 2017-09-15 14:02:20
  • 766

史上最全的iOS各种设备信息获取总结(iPhone8/iPhone X 已更新)

为了统计用户信息、下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述一下各种信息的获取方式: 点击下载以上展示效果的GitHub源码 ...
  • xiaobo0134
  • xiaobo0134
  • 2017-11-09 10:15:33
  • 2319

从单目视觉信息学习深度信息(一)

最近接触到了AR.Drone的无人机,开放接口这种事情最喜欢了,似乎可以用深度信息来控制无人机的运动,不过介于无人机只有单目摄像头的限制,不得不转换思维,开始搜集论文研究如何用单目视觉信息来获取深度。...
  • lcc921528642
  • lcc921528642
  • 2015-11-16 11:20:51
  • 5849

图像深度(Image Depth)

图像深度是指存储每个像素所用的位数,他也是用来度量图像的色彩分辨率的。他确定了彩色图像的每个像素可能有的色彩数,或者确定灰度图像的每个像素可能有的灰度级数。他决定了色彩图像中可能出现的最多的色彩数,或...
  • qq_26671365
  • qq_26671365
  • 2016-11-18 16:26:07
  • 3099

基于Qt与OpenCV的图片读取、保存,并利用Canny进行简单的边缘处理结果显示

本次采用Qt5.7(安装包名称为qt-opensource-windows-x86-mingw530-5.7.1.exe)与OpenCV3.1版本。两者环境的配置就不多说了。 最终实现了图片的读取,边...
  • weixin_38334320
  • weixin_38334320
  • 2017-04-15 14:15:17
  • 858

人脸识别活体检测的一些方法

人脸识别活体检测     在生物识别系统中,为防止恶意者伪造和窃取他人的生物特征用于身份认证,生物识别系统需具有活体检测功能,即判断提交的生物特征是否来自有生命的个体。     一般生物特...
  • Real_Myth
  • Real_Myth
  • 2017-01-11 17:14:00
  • 23467
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 217万+
    积分: 2万+
    排名: 345
    联系方式
    个人邮箱: xuxiduo@zju.edu.cn
    QQ群:
    1)OpenCV俱乐部
    群1:186168905 已满
    群2:421100161 可加

    2) 视频/音频/图像/算法/ML
    群1:148111910 可加
    群2:157103105 可加

    备注:加群需要回答问题,避免广告党。
    如果你是博客看到后加的,请注明“博客”并回答问题,只注明”博客“不回答问题的恕不加入。答案为和群相关的任何技术名词,不能出现1)和2)中的任何字眼
    博客专栏
    文章分类
    最新评论