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;
}