现在手上的设备是HBV-1780-2 单USB双目摄像头,还是大哥借给我用的。
下面是该设备的读取图像代码,可以用这份代码用来拍摄用于标定的棋盘图像
说明:按下s键会保存当前图像,按q键盘会推出。
#include <iostream>
#include <iomanip>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/videoio/videoio.hpp>
using namespace cv;
using namespace std;
VideoCapture cap(0);
void Pre_Camra(){
cap.set(CAP_PROP_FRAME_WIDTH, 1280);
cap.set(CAP_PROP_FRAME_HEIGHT, 480);
cap.set(CAP_PROP_FPS, 30);
}
class pre{
private:
Mat Pic_All;
Mat Pic_Left;
Mat Pic_Right;
public:
pre(){}
void pic_device(Mat img);
Mat pic_left_return();
Mat pic_right_return();
void show();
~pre(){}
}Pre_process;
void pre::pic_device(Mat img)
{
Pic_All = img.clone();
Pic_Left = img(Rect(Point(0,0), Point(img.cols/2, img.rows))).clone();
Pic_Right = img(Rect(Point(img.cols/2, 0), Point(img.cols, img.rows))).clone();
}
Mat pre::pic_left_return()
{
return Pic_Left;
}
Mat pre::pic_right_return()
{
return Pic_Right;
}
void pre::show()
{
imshow("left", Pic_Left);
imshow("right", Pic_Right);
imshow("all", Pic_All);
}
int currentIndex = 0;
void writerNextFrame(Mat & left, Mat& right,
int numberOfdigits= 2,
string extension = ".png",
string outputPath="/home/jason/work/01-img/"){
stringstream ss;
string LorR;
LorR="left";
ss << outputPath << LorR <<std::setfill('0')
<< std::setw(numberOfdigits)
<< currentIndex
<< extension;
imwrite(ss.str(), left);
cout<<ss.str()<<endl;
LorR="right";
ss.clear();
ss.str("");
ss << outputPath << LorR <<std::setfill('0')
<< std::setw(numberOfdigits)
<< currentIndex++
<< extension;
cout<<ss.str()<<endl;
imwrite(ss.str(),right);
}
int main()
{
stringstream ss;
string extension=".png";
string outputFileName="/home/jason/work/01-img/";
Pre_Camra();
Mat zong, left, right;
char key;
while (1) {
cap >> zong;
Pre_process.pic_device(zong);
Pre_process.show();
key = (char)waitKey(1);
if (key =='s')
{
left = Pre_process.pic_left_return();
right = Pre_process.pic_right_return();
writerNextFrame(left, right);
}
else if (key == 'q')
{
cout << "****** A total of " << (currentIndex+1)*2
<< " pictures are saved ******" << endl;
break;
}
}
cap.release();
return 0;
}
效果:
参考:
C++_Opencv 4.0+_读取_双目摄像头_hbv-1780-2 s2.0_StobestaR的博客-CSDN博客