#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
//2903.85 2438.65 2904.1
#define KNOWN_DISTANCE 70.866 //已知距离
#define KNOWN_WIDTH 0.787 //已知宽度0.787 11.69
#define KNOWN_HEIGHT 0.787 //已知高度0.787 8.27
//需要提前获取,通过标定步骤获得的
#define KNOWN_FOCAL_LENGTH 3000 //已知焦距
double MaxDistance = DBL_MIN;//最大距离
double MinDistance = DBL_MAX;//最小距离
void GetPicture(Mat& SrcImage, int choice);
void GetCamera(int choice);
void GetVideo(int choice);
double GetTheDistanceToCamera(double KnownWidth, double FocalLength, double PerWidth);
double CalculateFocalDistance(Mat& Image);
RotatedRect FindMarker(Mat& SrcImage);
//A4纸尺寸:210mm×297mm(16开纸)
int main(int argv, char* argc[])
{
int choice = 0;
cout << "请输入你想选择的模式" << endl;
cout << "识别图片请输入:1" << endl;
cout << "实时摄像头识别请输入:2" << endl;
cout << "读取视频请输入:3" << endl;
cin >> choice;
if (choice == 1) {
Mat SrcImage = imread("输入图片绝对路径在这里.jpg", IMREAD_COLOR);//获取图片
GetPicture(SrcImage, choice);
cout << "图像中检测过的轮廓中,最大距离为:" << MaxDistance << "cm" << endl;
cout << "图像中检测过的轮廓中,最小距离为:" << MinDistance << "cm" << endl;
}
else if (choice == 2) {
GetCamera(choice);
}
else if (choice == 3) {
GetVideo(choice);
}
}