You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
3.5 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include "stdafx.h"
// 情报数据通用结构
#include "QBStru.h"
#include <opencv2\opencv.hpp>
using namespace cv;
// 经纬度点坐标 结构体
struct GeoCoordinatePoint
{
double Latitude; // 纬度
double Longitude; // 经度
};
// 功能:地理信息计算
// 作者:王家星 2014/10/20
// 模块一:计算距离和方位
//功能1计算图像中两点间的距离和方位
//输入: 1. qbData 通用情报数据结构体
// 2. pt1 起点(像素坐标)
// 3. pt2 终点(像素坐标)
// 4. flagsflags = 0标识pt1、pt2为几何校正前图像中的点
// flags = 1标识pt1、pt2为几何校正后图像中的点
//
//输出: 1. distance 距离(单位:米)
// 2. azAngle 方位,起点到终点(单位:度)
// 3. 返回值计算有效返回true否则返回false
bool QBStruCalTwoPtsDistanceAzimuth(double &distance, double &azAngle,
const QBStru *qbData, cv::Point pt1, cv::Point pt2, int flags = 0);
//功能2基于复接数据计算几何校正前图像中两点间的距离和方位
//输入: 1. frameData 复接数据结构体
// 2. pt1 起点(像素坐标)
// 3. pt2 终点(像素坐标)
//
//输出: 1. distance 距离(单位:米)
// 2. azAngle 方位,起点点到终点(单位:度)
// 3. 返回值计算有效返回true否则返回false
bool CalTwoPointsDistanceAzimuth(double &distance, double &azAngle,
const struQB_FJ *frameData, cv::Point pt1, cv::Point pt2);
//功能3计算图像(几何校正后)中两点间的距离和方位
//输入: 1. img 图像数据结构体指针
// 2. pt1 起点(像素坐标)
// 3. pt2 终点(像素坐标)
//输出: 1. distance 距离
// 2. azAngle 方位,起点点到终点
// 3. 返回值计算有效返回true否则返回false
bool ImgStruCalTwoPtsDistanceAzimuth(double &distance, double &azAngle,
const ImgStru* img, cv::Point pt1, cv::Point pt2);
//功能4计算图像(几何校正后)中一点的经纬度
//输入: 1. img 图像数据结构体指针
// 2. pt 输入点(像素坐标)
//输出: 1. PtLatLon 输入点的经纬度坐标
// 2. 返回值计算有效返回true否则返回false
bool ImgStruCalOnePtLonLat(GeoCoordinatePoint& PtLatLon, const ImgStru* img, cv::Point pt);
// 模块二:计算多边行面积
//功能5计算图像中多点组成的多边形面积对凹凸多边形均适用
//输入: 1. qbData 通用情报数据结构体
// 2. pts 指向点坐标的指针
// 3. count 点数目
// 4. flagsflags = 0标识points为几何校正前图像中的点
// flags = 1标识points为几何校正后图像中的点
//输出: 1. area :多边形面积
// 2. 返回值计算有效返回true否则返回false
bool QBStruCalPolygonArea(double& area,
const QBStru *qbData, cv::Point* points, int count, int flags = 0);
//功能6计算图像中多点组成的多边形面积对凹凸多边形均适用
//输入: 1. frameData 复接数据
// 2. pts 指向点坐标的指针
// 3. count 点数目
//输出: 1. area :多边形面积
// 2. 返回值计算有效返回true否则返回false
bool CalPolygonArea(double& area, const struQB_FJ *frameData, cv::Point* pts, int count);
// 功能7计算由一组经纬度点构成的多边形面积对凹凸多边形均适用
// 输入: 1. pts 指向多个经纬度坐标组的指针
// 2. count 点数目
//输出: 1. area 面积
// 2. 返回值计算有效返回true否则返回false
//说明: 点为顺时针或逆时针均可;
bool CalPolygonArea(double& area, GeoCoordinatePoint* pts, int count);
// 功能8计算由一组平面坐标点构成的多边形面积对凹凸多边形均适用
// 输入: 1. pts 指向多个点坐标组的指针
// 2. count 点数目
//输出: 1. area 面积 无单位
// 2. 返回值计算有效返回true否则返回false
//说明: 点为顺时针或逆时针均可;
bool CalPolygonArea(double& area, cv::Point2f* pts, int count);