gpt4 book ai didi

基于Opencv实现双目摄像头拍照程序

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章基于Opencv实现双目摄像头拍照程序由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例为大家分享了Opencv实现双目摄像头拍照程序的具体代码,供大家参考,具体内容如下 。

我用的双目摄像头是一根usb线接入电脑。运行环境是vc2015,opencv3.0。将左右两个摄像头拍到的图片分别保存起来.

贴出代码(C++) 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include"stdafx.h"
#include<iostream>
#include<string>
#include<sstream>
#include<opencv2/core.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/videoio.hpp>
#include<opencv2/opencv.hpp>
#include<stdio.h>
using namespace std;
using namespace cv;
const char * keys =
{
  "{help h usage ? | | print this message}"
  "{@video | | Video file, if not defined try to use webcamera}"
};
 
int main( int argc, const char ** argv) //程序主函数
{
  CommandLineParser parser(argc, argv, keys);
  parser.about( "Video Capture" );
 
  if (parser.has( "help" )) //帮助信息
  {
  parser.printMessage();
  return 0;
  }
  String videoFile = parser.get<String>(0);
 
  if (!parser.check())
  {
  parser.printErrors();
  return 0;
  }
 
  VideoCapture cap;
  if (videoFile != "" )
  {
  cap.open(videoFile);
  }
  else
  {
 
  cap.open(0); //打开相机,电脑自带摄像头一般编号为0,外接摄像头编号为1,主要是在设备管理器中查看自己摄像头的编号。
      //--------------------------------------------------------------------------------------
 
  cap.set(CV_CAP_PROP_FRAME_WIDTH, 2560); //设置捕获视频的宽度
  cap.set(CV_CAP_PROP_FRAME_HEIGHT, 720); //设置捕获视频的高度
  }
  if (!cap.isOpened())             //判断是否成功打开相机
  {
  cout << "摄像头打开失败!" << endl;
  return -1;
  }
     Mat frame, frame_L,frame_R;
    
  cap >> frame;                //从相机捕获一帧图像
 
  Mat grayImage;                //用于存放灰度数据
 
  double fScale = 0.5;             //定义缩放系数,对2560*720图像进行缩放显示(2560*720图像过大,液晶屏分辨率较小时,需要缩放才可完整显示在屏幕)
  Size dsize = Size(frame.cols*fScale, frame.rows*fScale);
  Mat imagedst = Mat(dsize, CV_32S);
  resize(frame, imagedst, dsize);
     char key;
     char image_left[200];
     char image_right[200];
     int count1 = 0;
     int count2 = 0;
     namedWindow( "图片1" ,1);
     namedWindow( "图片2" ,1);
   
 
     while (1)
  {
  key = waitKey(50);
  cap >> frame;   //从相机捕获一帧图像
  resize(frame, imagedst, dsize);     //对捕捉的图像进行缩放操作
 
  frame_L = imagedst(Rect(0, 0, 640, 360)); //获取缩放后左Camera的图像
  namedWindow( "Video_L" , 1);
  imshow( "Video_L" , frame_L);
 
  frame_R = imagedst(Rect(640, 0, 640, 360)); //获取缩放后右Camera的图像
  namedWindow( "Video_R" , 2);
  imshow( "Video_R" , frame_R);
  if (key == 27) //按下ESC退出
   break ;
  if (key == 32) // 按下空格开始拍照图片保存在工程文件下
  {
   sprintf_s(image_left, "image_left_%d.jpg" , ++count1);
   imwrite(image_left, frame_L);
   imshow( "图片1" , frame_L);
   sprintf_s(image_right, "image_right_%d.jpg" , ++count2);
   imwrite(image_right, frame_R);
   imshow( "图片2" , frame_R);
  }
      }
   
      return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

最后此篇关于基于Opencv实现双目摄像头拍照程序的文章就讲到这里了,如果你想了解更多关于基于Opencv实现双目摄像头拍照程序的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com