楼主: Lisrelchen
2755 12

[程序汇编]OpenCV Programming using C,Python, Java [推广有奖]

  • 0关注
  • 62粉丝

VIP

院士

67%

还不是VIP/贵宾

-

TA的文库  其他...

Bayesian NewOccidental

Spatial Data Analysis

东西方数据挖掘

威望
0
论坛币
49957 个
通用积分
79.5487
学术水平
253 点
热心指数
300 点
信用等级
208 点
经验
41518 点
帖子
3256
精华
14
在线时间
766 小时
注册时间
2006-5-4
最后登录
2022-11-6

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
基于OpenCV视频采集程序
  1. 基于opencv的use摄像头视频采集程序
  2. 准备工作:你得把opencv库装到电脑上,并把各种头文件,源文件,lib库都连到vc上,然后设置一下系统环境变量,这里这方面就不说了,好像我前面的文章有说过,不懂也可百度一下。
  3. 建立一个基于WIN32控制台的工程CameraUSB,在新建一个c++元文件,写代码:
  4. #include "cxcore.h"
  5. #include "cvcam.h"
  6. #include "windows.h"
  7. #include "highgui.h"
  8. void callback(IplImage* image);
  9. int main()
  10. {
  11. int ncams=cvcamGetCamerasCount( );//返回可以访问的摄像头数目
  12. HWND MyWin;
  13.     // 设置系统属性
  14. cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE); //选择第一个摄像头   
  15. //camera
  16.     cvcamSetProperty(0, CVCAM_PROP_RENDER, CVCAMTRUE); //We'll render stream
  17.     // 在本例中
  18.     // 假设创建一个窗口,并且窗口的ID是在变量 MyWin 中定义
  19.     // MyWin 是窗口 HWND 的类型
  20.     MyWin=(HWND)cvGetWindowHandle("CameraUSB window");   
  21.     cvcamSetProperty(0,CVCAM_PROP_WINDOW,&MyWin);   // Selects a window for
  22.     //video rendering
  23. //回调函数将处理每一帧
  24. cvcamSetProperty(0,CVCAM_PROP_CALLBACK,callback);
  25.      cvcamInit( );
  26.     cvcamStart( );
  27.     // 现在程序开始工作
  28.     cvWaitKey(0);
  29.     cvcamStop( );
  30.     cvcamExit( );
  31.     return 0;
  32. }
  33. // 在图像中画兰色水平线
  34. void callback(IplImage* image)
  35. {
  36.     IplImage* image1 = image;
  37.     int i,j;
  38.    
  39.     assert (image);
  40.    
  41.     for(i=0; i<image1->height; i+=10)
  42.     {
  43.         for(j=(image1->widthStep)*i; j<(image1->widthStep)*(i+1);
  44.         j+=image1->nChannels)
  45.         {
  46.             image1->imageData[j]   = (char)255;
  47.             image1->imageData[j+1] = 0;
  48.             image1->imageData[j+2] = 0;
  49.         }
  50.      }
  51. }
复制代码



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Programming Program python Using Ming 百度一下 include 摄像头 控制台 源文件

沙发
Lisrelchen 发表于 2016-3-27 00:30:50 |只看作者 |坛友微信交流群
基于OpenCV数据采集
  1. 实现功能:同时采集两路USB摄像头数据,并显示,具有图片保存功能(点击左键保存图片,并暂停视频;右键继续视频)。步骤就不说了,很简单,直接放代码了:
  2. #include <cvcam.h>
  3. #include <cv.h>
  4. #include <highgui.h>
  5. #include "stdio.h"
  6. #include <windows.h>
  7. void StereoCallback(IplImage *frame1,IplImage *frame2);
  8. void onMouse1(int Event,int x,int y,int flags,void *param);
  9. void onMouse2(int Event,int x,int y,int flags,void *param);
  10. IplImage *image1,*image2;
  11. char *strleft[4]={"left1.bmp","left2.bmp","left3.bmp","left4.bmp"};
  12. char *strright[4]={"right1.bmp","right2.bmp","right3.bmp","right4.bmp"};
  13. void main()
  14. {
  15.     HWND CaptureWindow1=0; //不赋值也行
  16.     HWND CaptureWindow2=0;
  17. //int ncams=cvcamGetCamerasCount(); //获取摄像头的个数,在这里可有可无
  18. //用对话框的形式来选取摄像头
  19.     int *CameraNumber;
  20.     int nSelected = cvcamSelectCamera(&CameraNumber);
  21. /* //灰色图像
  22. image1=cvCreateImage(cvSize(320,240),IPL_DEPTH_8U,1);
  23. image2=cvCreateImage(cvSize(320,240),IPL_DEPTH_8U,1);
  24. */
  25. //彩色图像
  26. image1=cvCreateImage(cvSize(320,240),IPL_DEPTH_8U,3);
  27. image2=cvCreateImage(cvSize(320,240),IPL_DEPTH_8U,3);
  28. //初始化两个摄像头
  29.    cvNamedWindow("cvcam1 Window",1);
  30.         CaptureWindow1=(HWND)cvGetWindowHandle("cvcam1 Window");
  31.         cvcamSetProperty(CameraNumber[0], CVCAM_PROP_ENABLE, CVCAMTRUE);
  32.         cvcamSetProperty(CameraNumber[0], CVCAM_PROP_RENDER, CVCAMTRUE);
  33.         cvcamSetProperty(CameraNumber[0], CVCAM_PROP_WINDOW, &CaptureWindow1);
  34. // cvSetMouseCallback("cvcam1 Window",onMouse1,0);

  35.         cvNamedWindow("cvcam2 Window",1);
  36.         CaptureWindow2=(HWND)cvGetWindowHandle("cvcam2 Window");
  37.         cvcamSetProperty(CameraNumber[1], CVCAM_PROP_ENABLE, CVCAMTRUE);
  38.         cvcamSetProperty(CameraNumber[1], CVCAM_PROP_RENDER, CVCAMTRUE);
  39.         cvcamSetProperty(CameraNumber[1], CVCAM_PROP_WINDOW, &CaptureWindow2);
  40. // cvSetMouseCallback("cvcam2 Window",onMouse2,0);
  41. //让两个摄像头同步
  42.    cvcamSetProperty(CameraNumber[0],CVCAM_STEREO_CALLBACK,(void*)&StereoCallback);
  43. //启动程序
  44.     cvcamInit();
  45.     cvcamStart();
  46. cvSetMouseCallback("cvcam1 Window",onMouse1,0);
  47. cvSetMouseCallback("cvcam2 Window",onMouse2,0);
  48.     cvWaitKey(0);
  49.     cvcamStop();
  50. free(CameraNumber);
  51. cvcamExit();
  52.     cvDestroyWindow("cvcam1 Window");
  53.     cvDestroyWindow("cvcam2 Window");
  54. }
  55. void StereoCallback(IplImage* frame1,IplImage *frame2)
  56. {
  57. /*   //把图像转换成灰度图并保存到image中
  58. cvCvtColor(frame1,image1,CV_RGB2GRAY);
  59. cvCvtColor(frame2,image2,CV_RGB2GRAY);
  60. */
  61. //拷贝图像到全局变量image中 该函数这样用存在问题
  62. // cvCopy(frame1,image1);
  63. // cvCopy(frame2,image2);
  64. image1=cvCloneImage(frame1);
  65. image2=cvCloneImage(frame2);
  66. //对截取的图像翻转
  67. cvFlip(image1,image1,0);
  68. cvFlip(image2,image2,0);
  69. }
  70. void onMouse1(int Event,int x,int y,int flags,void *param)
  71. {

  72. static int num=0;
  73.    if(Event==CV_EVENT_LBUTTONDOWN)
  74.    {
  75.    if(num==4)num=0;//只是固定定义了保存4张图片,为了不让程序非法而设置的复原
  76.     cvcamPause();
  77.     //图像保存
  78.    cvSaveImage(strleft[num],image1);
  79. // cvSaveImage(strright[num],image2);
  80.    // cvSaveImage("left.bmp",image1);
  81.    // cvSaveImage("right.bmp",image2);
  82.    }
  83.    if(Event==CV_EVENT_RBUTTONDOWN)
  84.    {
  85.     cvcamResume();
  86.     num++;
  87.    }
  88.   
  89. }
  90. void onMouse2(int Event,int x,int y,int flags,void *param)
  91. {

  92. static int num=0;
  93.    if(Event==CV_EVENT_LBUTTONDOWN)
  94.    {
  95.    if(num==4)num=0;//只是固定定义了保存4张图片,为了不让程序非法而设置的复原
  96.     cvcamPause();
  97.     //图像保存
  98. //   cvSaveImage(strleft[num],image1);
  99.    cvSaveImage(strright[num],image2);
  100.    // cvSaveImage("left.bmp",image1);
  101.    // cvSaveImage("right.bmp",image2);
  102.    }
  103.    if(Event==CV_EVENT_RBUTTONDOWN)
  104.    {
  105.     cvcamResume();
  106.     num++;
  107.    }
  108.   
  109. }
复制代码

使用道具

藤椅
Nicolle 学生认证  发表于 2016-3-27 02:35:28 |只看作者 |坛友微信交流群
提示: 作者被禁止或删除 内容自动屏蔽

使用道具

板凳
Nicolle 学生认证  发表于 2016-3-27 02:38:56 |只看作者 |坛友微信交流群
提示: 作者被禁止或删除 内容自动屏蔽

使用道具

报纸
Nicolle 学生认证  发表于 2016-3-27 02:42:51 |只看作者 |坛友微信交流群
提示: 作者被禁止或删除 内容自动屏蔽

使用道具

地板
Nicolle 学生认证  发表于 2016-3-27 02:45:00 |只看作者 |坛友微信交流群
提示: 作者被禁止或删除 内容自动屏蔽

使用道具

7
Nicolle 学生认证  发表于 2016-3-27 02:47:10 |只看作者 |坛友微信交流群
提示: 作者被禁止或删除 内容自动屏蔽

使用道具

8
Nicolle 学生认证  发表于 2016-3-27 02:50:32 |只看作者 |坛友微信交流群
提示: 作者被禁止或删除 内容自动屏蔽

使用道具

9
Nicolle 学生认证  发表于 2016-3-27 02:53:02 |只看作者 |坛友微信交流群
提示: 作者被禁止或删除 内容自动屏蔽

使用道具

10
Nicolle 学生认证  发表于 2016-3-27 03:05:50 |只看作者 |坛友微信交流群
提示: 作者被禁止或删除 内容自动屏蔽

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 12:13