像素坐标转换实际坐标python_从像素坐标计算x&y坐标

嘿嘿!

我有一个平面的图像(从上面拍摄,角度为30°),我想要一个特定像素的x&y坐标,但以厘米为单位(坐标系在曲面中)。

有没有办法存档?

我正在使用python,但如果有任何帮助,我将不胜感激!:)

编辑:

我尝试了同音字法从下面,但我没有安静设法使它工作。她就是我所做的:#two sets of points I used

#src: corners + center of my 400px*460px image

#dst: coordinate system being outside the image

src = np.matrix(((1, 1, 1),(400, 1, 1),(1, 460, 1),(400, 460, 1),(200,230,1)))

dst= np.matrix(((31.6, 7, 1),(14.5, 7, 1),(28.4, 26.3, 1),(17, 26.3, 1),(22.6,18.6,1 )))

#src: random points from the image of my 400px*460px image

#dst: coordinate system being in the actual image

src = np.matrix(((1, 1, 1),(400, 460, 1),(200,1,1), (100, 170, 1), (280, 320, 1),(300, 50, 1)))

dst= np.matrix(((0, 0, 1),(14.6, 19.3, 1),(17.1/2,0,1), (5.0, 9.2, 1), (11.65, 15.3, 1), (12.9, 2.9, 1) ))

H = cv2.findHomography(src,dst,0)[0]

print (H)

for c in range(0,5):

x= c*100

y = 1

print(x,y,np.dot(H,np.array((x,y,1))))

Actual Photo of the setup

正方形是(400px*460px)图片上可见的区域。摄像机位于右边的黑盒子里。X&Y是我的像素坐标。

只要你保持在x轴上,两组数字的结果都是好的。一旦我沿着y轴向下移动,数字就会出错。在

将经纬度坐标转换为监控像素坐标需要知道以下几个参数: 1. 监控画面的分辨率(宽度和高度) 2. 监控画面的显示区域对应的经纬度范围 3. 待转换的经纬度坐标 假设我们已知以上参数,以下是一个简单的 Python 函数,可以将经纬度坐标转换为监控像素坐标: ```python import math def latlon_to_pixel(lat, lon, width, height, lat_min, lat_max, lon_min, lon_max): """ 将经纬度坐标转换为监控像素坐标 Arguments: lat -- 待转换的纬度 lon -- 待转换的经度 width -- 监控画面的宽度 height -- 监控画面的高度 lat_min -- 监控画面显示区域的最小纬度 lat_max -- 监控画面显示区域的最大纬度 lon_min -- 监控画面显示区域的最小经度 lon_max -- 监控画面显示区域的最大经度 Returns: x -- 转换后的 x 坐标 y -- 转换后的 y 坐标 """ # 计算纬度和经度的比例因子 lat_scale = height / (lat_max - lat_min) lon_scale = width / (lon_max - lon_min) # 计算像素坐标 x = math.floor((lon - lon_min) * lon_scale) y = math.floor((lat_max - lat) * lat_scale) return x, y ``` 使用示例: ```python # 监控画面分辨率为 1920x1080,显示区域为北京市 width = 1920 height = 1080 lat_min = 39.6 lat_max = 41.1 lon_min = 115.4 lon_max = 117.5 # 待转换的经纬度坐标为 (40.0, 116.5) lat = 40.0 lon = 116.5 # 转换为像素坐标 x, y = latlon_to_pixel(lat, lon, width, height, lat_min, lat_max, lon_min, lon_max) # 输出结果 print("经纬度坐标 ({}, {}) 转换为像素坐标 ({}, {})".format(lon, lat, x, y)) ``` 输出结果: ``` 经纬度坐标 (116.5, 40.0) 转换为像素坐标 (1053, 321) ``` 注意:以上代码仅提供基本的经纬度转像素坐标计算方法,实际使用时还需要考虑地球的椭球形状、地图投影方式等因素对坐标转换的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值