opencv打开双目

1,打开两个单目,拼成双目

#include <opencv2/opencv.hpp>
#include <opencv2/opencv_modules.hpp>
#include <iostream>

using namespace cv;
using namespace std;


//int main17051000()
int main()
{
	VideoCapture cap0(0), cap1(1);
	Mat image0, image1;

	cap0.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
	cap0.set(CV_CAP_PROP_FRAME_WIDTH, 320);
	cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
	cap1.set(CV_CAP_PROP_FRAME_WIDTH, 320);

	Mat imageTwo(240, 320 * 2, CV_8UC3);

	Rect image0R(0, 0, 320, 240);
	Rect image0L(320, 0, 320, 240);

	Mat image0R1 = imageTwo(image0R);
	Mat image0R2 = imageTwo(image0L);
	if (cap0.isOpened())
	{
		while (true)
		{
			cap0 >> image0;

			//blur(image0, image0, Size(5, 5));
			//Canny(image1, image1, 0.2, 2);
			image0.copyTo(image0R1);

			imshow("image0", image0);

			imshow("imageTwo", imageTwo);
			waitKey(1);
		}
	}

	if (cap0.isOpened() & cap1.isOpened())
	{
		while (true)
		{
			cap0 >> image0;
			cap1 >> image1;

			//blur(image0, image0, Size(5, 5));
			//Canny(image1, image1, 0.2, 2);
			image0.copyTo(image0R1);
			image1.copyTo(image0R2);

			imshow("image0", image0);
			imshow("image1", image1);

			imshow("imageTwo", imageTwo);
			waitKey(1);
		}
	}
	else
	{
		cout << "cannot open camera" << endl;
	}
	getchar();
	return 0;
}


int main2()
{
	int rows = 480, cols = 640;
	cv::Mat image = cv::imread("nature.jpg");
	if (!image.data)
	{
		cout << "There is no picture" << endl;
		getchar();
		return false;

	}
	Size imageSize = image.size();

	Mat imageTwo = Mat(imageSize.height, imageSize.width * 2, CV_8UC3);
	Rect imageLeft(0, 0, imageSize.width, imageSize.height);
	Rect imageRight(imageSize.width, 0, imageSize.width, imageSize.height);
	//Mat mLeftView = m_mView(cv::Rect(0, 0, 640, 480));
	Mat imLeft = imageTwo(imageLeft);
	Mat imRight = imageTwo(imageRight);

	image.copyTo(imLeft);
	image.copyTo(imRight);


	if (image.data)
	{
		cv::imshow("image", imageTwo);
		cv::waitKey();
	}
	else
	{
		std::cout << "there is no picture!" << std::endl;
	}
	getchar();
	return 0;
}


2,以前opencv打开相机的写法

#include <opencv2/opencv.hpp>
#include <stdio.h>
#include <iostream>

#define WIDTH  640
#define HEIGHT 480

using namespace std;
using namespace cv;

int main4()
{
	CvCapture *capture1 = NULL, *capture2 = NULL; //capture1 <-> left, capture2 <-> right
	IplImage* imageLeft;
	IplImage* imageRight;

	capture1 = cvCaptureFromCAM(0);
	assert(capture1 != NULL);
	//	cvWaitKey(100);

	capture2 = cvCaptureFromCAM(1);
	assert(capture2 != NULL);

	cvSetCaptureProperty(capture1, CV_CAP_PROP_FRAME_WIDTH, WIDTH);
	cvSetCaptureProperty(capture1, CV_CAP_PROP_FRAME_HEIGHT, HEIGHT);
	cvSetCaptureProperty(capture2, CV_CAP_PROP_FRAME_WIDTH, WIDTH);
	cvSetCaptureProperty(capture2, CV_CAP_PROP_FRAME_HEIGHT, HEIGHT);

	while (1)
	{
		imageLeft = cvQueryFrame(capture1);
		imageRight = cvQueryFrame(capture2);
		Mat viewL(imageLeft), viewR(imageRight);

		imshow("viewL", viewL);
		imshow("viewR", viewR);
		waitKey(3);

	}

	cvReleaseCapture(&capture1);
	cvReleaseCapture(&capture2);

	return 0;
}

int main()
{
	//main1();
	VideoCapture ML(0);
	VideoCapture  MR(1);

	ML.set(CV_CAP_PROP_FRAME_WIDTH, 320);
	ML.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
	MR.set(CV_CAP_PROP_FRAME_WIDTH, 320);
	MR.set(CV_CAP_PROP_FRAME_HEIGHT, 240);


	Mat viewL, viewR;
	while (1)
	{
		ML >> viewL;
		MR >> viewR;
		resize(viewR, viewR, Size(640, 480));
		resize(viewL, viewL, Size(640, 480));

		if (viewL.data && viewR.data)
		{
			imshow("viewL", viewL);
			imshow("viewR", viewR);
			waitKey(3);
		}

	}

	return 0;
}

3,双目有一个USB接口

#include <opencv2\opencv.hpp>
#include <iostream>
#include <Windows.h>

using namespace cv;
using namespace std;

int main()
//int main()
{
	VideoCapture m_InputCapture(0);

		m_InputCapture.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
		m_InputCapture.set(CV_CAP_PROP_FRAME_HEIGHT, 480);

		Mat view0, m_mView;
	
		while (!m_InputCapture.isOpened())
		{
			Sleep(2);
			cout << "cannot open the camera!" << endl;
		}
		for (;;)
		{
			m_InputCapture >> view0;
			view0.copyTo(m_mView);

			Mat mLeftView = m_mView(cv::Rect(0, 0, 640, 480));
			Mat mRightView = m_mView(cv::Rect(640, 0, 640, 480));
			imshow("cameraR", mRightView);
			imshow("cameraL", mLeftView);
			waitKey(1);
		}
		

	return 0;
}


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值