在百度地图中,已知圆的圆心坐标、 和圆的半径(单位:米),怎么计算圆的坐标范围?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在百度地图中,已知圆的圆心坐标、 和圆的半径(单位:米),怎么计算圆的坐标范围?相关的知识,希望对你有一定的参考价值。
参考技术A 圆心(a,b), 半径r(x-a)^2+(y-b)^2≤r^2
仅当点在圆周闪时,等号成立追问
那我怎么计算出百度地图中, 圆的最大X坐标, 最小X坐标, 最大Y坐标,最小Y坐标呢?
还有一点就是,百度地图中坐标和距离的换算比例是多少? 直接通过公式:(x-a)^2+(y-b)^2≤r^2 恐怕不行, 需要换算一下坐标和距离的比例。
y=b时x有最大值a+r, 和最小值a-r
x=a时y有最大值b+r,和最小值b-r
地图里面会显示比例,比如1:500
对于地图上任意两点(a,b)和(c,d),其距离是s
s^2=(a-c)^2+(b-d)^2
s*500即为实际距离
百度地图使用的是摩卡托坐标。 现在就是不知道摩卡托坐标和厘米是怎么换算的。
比如坐标(x,y)和坐标(x, y+1)相距多少厘米?
原来是这样?那我不知道了
追问您好,您知道一下这个公式怎么计算吗?
现在我知道了x1, y1, y2,和length, 我想求出x2
length = acos((sin(y1) * sin(y2) + cos(y1) * cos(y2) * cos(x2 - x1)))
(x-a)^2+(y-b)^2≤r^2
仅当点在圆周上时,等号成立。追问
那我怎么计算出百度地图中, 圆的最大X坐标, 最小X坐标, 最大Y坐标,最小Y坐标呢?
还有一点就是,百度地图中坐标和距离的换算比例是多少? 直接通过公式:(x-a)^2+(y-b)^2≤r^2 恐怕不行, 需要换算一下坐标和距离的比例。
最大X坐标=(a+r,b), 最小X坐标=(a-r,b), 最大Y坐标=(a,b+r),最小Y坐标=(a,b-r).
使用百度地图中的工具中的测距就可以了,地图的左下角有比例尺。
您好,您知道一下这个公式怎么计算吗?
现在我知道了x1, y1, y2,和length, 我想求出x2
length = acos((sin(y1) * sin(y2) + cos(y1) * cos(y2) * cos(x2 - x1)))
霍夫圆检测
将空域点转化为极坐标,圆的极坐标表示如下
x=Rcosθ+a
y=Rsinθ+b
令xy已知,ab未知,则可以在原来的圆边界上上生成同样半径的圆
这些圆的交点就是圆心,在极坐标中,圆心点的始终处于最大值就是霍夫曼检测的原理(圆心是相交最多次数的点)
代码演示
#include"pch.h" #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespace cv; int main(int argc, char **argv) { Mat src, dst; src = imread("2.jpg"); if (!src.data) { printf("Error "); return -1; } char INPUT_TITLE[] = "input_image"; char OUTPUT_TITLE[] = "hough_circle_demo"; namedWindow(INPUT_TITLE, CV_WINDOW_AUTOSIZE); namedWindow(OUTPUT_TITLE, CV_WINDOW_AUTOSIZE); imshow(INPUT_TITLE, src); //中值滤波 Mat mlf_opt; medianBlur(src, mlf_opt, 3);//ksize取3 cvtColor(mlf_opt, mlf_opt, CV_BGR2GRAY); //霍夫圆检测 vector<Vec3f> pcircles;//可能的圆心 HoughCircles(mlf_opt, pcircles, CV_HOUGH_GRADIENT, 1, 10, 100, 35, 5, 50); cout << pcircles[1] << endl; src.copyTo(dst); for (size_t i = 0; i < pcircles.size(); ++i) { Vec3f cc = pcircles[i]; circle(dst, Point(cc[0], cc[1]), cc[2], Scalar(0, 0, 255), 2, LINE_AA); circle(dst, Point(cc[0], cc[1]), 1, Scalar(198, 20, 255), 2, LINE_AA); } imshow(OUTPUT_TITLE, dst); waitKey(0); return 0; }
函数带有以下自变量:
- src_gray: 输入图像 (灰度图)
- circles: 存储下面三个参数: 集合的容器来表示每个检测到的圆.
- CV_HOUGH_GRADIENT: 指定检测方法. 现在OpenCV中只有霍夫梯度法
- dp = 1: 累加器图像的反比分辨率
- min_dist = src_gray.rows/10: 检测到圆心之间的最小距离
- param_1 = 100: Canny边缘函数的高阈值
- param_2 = 35: 圆心检测阈值.
- min_radius = 5: 能检测到的最小圆半径, 默认为0.
- max_radius = 50: 能检测到的最大圆半径, 默认为0
circle打印圆,第一个打印边界,第二个打印圆心(半径调小)
以上是关于在百度地图中,已知圆的圆心坐标、 和圆的半径(单位:米),怎么计算圆的坐标范围?的主要内容,如果未能解决你的问题,请参考以下文章