如果你的gdal版本是3.2.2及以上,那么只能:
from osgeo import gdal
ds = gdal.Open(data)
rows = ds.RasterYSize
cols = ds.RasterXSize
bandnum = ds.RasterCount
transform = ds.GetGeoTransform()
ds是一个对象,rows是影像的行,也是Y轴长度。对应的,cols则是影像的列,X轴的长度。bandnum代表影像的波段数。
transform是一个list,存储着栅格数据集的地理坐标信息。
#transform[0] /* top left x 左上角x坐标(经度)*/
#transform[1] /* w--e pixel resolution 东西方向上的像素分辨率*/
#transform[2] /* rotation, 0 if image is "north up" 如果北边朝上,地图的旋转角度*/
#transform[3] /* top left y 左上角y坐标(纬度)*/
#transform[4] ...
昨天分享的谷歌影像下载器你们是否在用?你们是否觉得好用?
今天聊另一个话题,是关于我的技术债的问题。
我本人并不是计算机科班出门,很多东西都是都是干中学。学得越多发现不会的越多。
去年我曾计划好好学无人机影像处理,好好学SAR,好好学rust,好好学这些那些。
我的好朋友一直说我怎么这么多精力?
实际上个人的精力是有限。年纪上去了,游戏我现在只打王者荣耀了,电脑游戏也半年没玩过了。所以我空闲的时候就学习,学不动了就开一把王者…
昨天有人在评论区问我会什么?我大概只会一点点代码。
写代码的初衷是改造这个世界。以前我不懂代码的时候,被for循环震撼了。等我有一定的编程基础后,用for循环去实现批量处理影像。
这几年,我写过几个工具。这些工具有明显的需求,并且可以减轻繁琐的手动操作。
为什么学无人机影像处理?
这是出于个人对未来的考虑?能在未来做什么?以后想做什么内容?
至于怎么学?先看看这个领域和自己会的东西有没有重合,相似的地方在哪里,然后复现别人的操作。
这和写论文的路数差不多的,复现操作,找到痛点,提出改进。
可惜的是,无人机影像处理、sar、rust这几个领域我都处于复现操作 ...
深度学习
未读在深度学习中,PyTorch 的 .pth 文件常用于保存神经网络的模型权重(state_dict)。当我们看到一个 .pth 文件时,可能会好奇:这个模型到底有多少参数?
下面分为两部分,正推和反推。
正推假设我的模型有一百万个参数,那么我的pth模型多大?
在 PyTorch 中,模型参数通常以 32 位浮点数(float32)存储,每个参数占用 4 字节(32 bits ÷ 8 bits/byte = 4 bytes)。
因此,存储所有参数所需的总字节数为:
1,000,000 参数 × 4 字节/参数 = 4,000,000 字节
转换为 MB:
4,000,000 字节 ÷ (1024 × 1024) = 4,000,000 ÷ 1,048,576 ≈ 3.81 MB
基于上述计算,假设 .pth 文件只保存模型参数(state_dict),文件大小约为 3.81 MB。加上少量的元数据,实际大小可能略高于此值,但通常略比3.81mb大一些。
反推假设.pth 文件是100MB,那她可能有个多少参数?
1. 文件大小转换100MB 的文件大小需要转换为字节:
100 MB ...
深度学习
未读朋友们,你觉得一张10672 × 9525像素的 RGB 图像(3 个颜色通道)是多大?
我最近我使用小白影像下载器,下载了一张影像。我一看这个文件大小,把我看惊了。
它的大小高达 8.95兆。
这确实是非常高效的压缩。今天我们探讨一下关于谷歌地球如何实现如此高效压缩的分析,以及这背后可能的压缩技术和步骤。
1. 计算未压缩图片大小首先,计算未压缩的图片大小以了解压缩程度:
像素总数:10672 × 9525 = 101,660,700 像素
每像素字节数:RGB 图像,3 通道 × 8 位(1 字节)= 3 字节/像素
总字节数:101,660,700 像素 × 3 字节/像素 = 304,982,100 字节
转换为 MB:1 MB = 1,048,576 字节
304,982,100 ÷ 1,048,576 ≈ 290.91 MB
相比之下,谷歌地球将这张图片压缩到 8.95 MB,压缩比约为 290.91 ÷ 8.95 ≈ 32.5:1,显示出极高的压缩效率。
2. 谷歌地球影像压缩的实现方式谷歌地球(Google Earth)使用卫星或航空影像,通过以下技术和策略 ...
写博客是一种低成本但高价值的记录方式,主要投入的是时间,而非金钱。
以我为例,我仅花费200元购买了十年的域名,平均每年成本微乎其微。如果你想进一步省钱,甚至可以完全不购买域名,利用免费平台照样能搭建博客。
我的博客使用的是静态网站,托管在GitHub Pages上,基于开源的Hexo框架。
这意味着整个搭建过程几乎没有额外费用,只需花时间学习和配置即可。对于想开始写博客的人,搜索Hexo教程是一个简单直接的起点,网上有大量免费资源和指南,足够帮助你快速上手。
静态网页的定义,简单来说,就是内容在生成后不会因用户请求而动态变化。
换句话说,访问者看到的内容是固定的,不会因为用户的操作而实时生成或修改。
以我之前开发的小程序为例,它也是静态网页的一种,内容事先准备好,加载后直接呈现。
相比动态网页,静态网页的开发和维护成本低得多,因为它不需要复杂的后端支持,比如用户登录系统、数据库管理或实时数据处理。
这对个人博客来说尤其适合,因为大多数博客的核心功能是展示内容,而非交互。
选择静态网页的好处还在于它的轻量和高效。
托管在GitHub Pages这样的平台上,不仅免费,还能借助版本控 ...
打造一个简洁实用的经纬度查询工具最近折腾了一个基于Web的经纬度查询工具,挺有意思的,分享一下开发过程和心得。
我是先做了这个网页再改成小程序。本次将web端版本开源。
这个工具主要是为了方便查询地图上的经纬度坐标,支持实时显示鼠标位置的坐标、点击固定坐标点,还能切换不同的地图和坐标格式,适合需要快速定位或者研究地图数据的朋友。
项目背景有时候我们需要精确地获取某个地点的经纬度,比如做地理信息相关的开发、户外活动规划,或者只是单纯好奇某个地方的坐标。市面上虽然有不少地图工具,但要么功能复杂,要么需要注册账号,或者界面不够直观。于是我就想着自己动手做一个简单易用的工具,核心需求是:
支持高德地图和OpenStreetMap切换
鼠标移动时实时显示坐标
点击地图可以固定坐标点
支持GCJ02、WGS84三种坐标系转换
界面简洁,适配手机和电脑
最终成品是一个纯前端的Web应用,部署在GitHub Pages上,打开浏览器就能用,体验还不错。
功能亮点这个工具虽然简单,但功能还算实用:
双地图支持:可以切换高德地图和OpenStreetMap。高德地图适合国内场景,OpenStree ...
简单的认识Cnamespace DataTypeApplication
{
class study
{
public int add(int a, int b)
{ int result;
result = a + b;
return result;
}
}
class Program
{
static void Main(string[] args)
{
study a = new study();
Console.WriteLine("Size of int: {0}",a.add(1,2));
Console.ReadLine();
}
}
}
1. 先看代码的整体结构这段代码可以分成两部分:
namespace DataTypeApplication(命名空间,类似“文件夹”)
class s ...
简单的认识Cnamespace DataTypeApplication
{
class study
{
public int add(int a, int b)
{ int result;
result = a + b;
return result;
}
}
class Program
{
static void Main(string[] args)
{
study a = new study();
Console.WriteLine("Size of int: {0}",a.add(1,2));
Console.ReadLine();
}
}
}
1. 先看代码的整体结构这段代码可以分成两部分:
namespace DataTypeApplication(命名空间,类似“文件夹”)
class s ...
rust
未读使用方法[source.crates-io]
replace-with = 'mirror'
[source.mirror]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
注:$CARGO_HOME:在 Windows 系统默认为:%USERPROFILE%\.cargo,在类 Unix 系统默认为:$HOME/.cargo。
注:cargo 仍会尝试读取不带 .toml 扩展名的配置文件(即 $CARGO_HOME/config),但从 1.39 版本起,cargo 引入了对 .toml 扩展名的支持,并将其设为首选格式。请根据使用的 cargo 版本选择适当的配置文件名。
在 Linux 环境可以使用下面的命令完成:
mkdir -vp ${CARGO_HOME:-$HOME/.cargo}
cat << EOF | tee -a ${CARGO_HOME:-$HOME/.cargo}/config.toml
[source.crates-io]
replace-w ...
在坐着车,突然想到了一个AI模型训练的一个好的idea。
心情本来不是特别坏,也不是特别好,但是想出这个idea之后,灵感就迸发了,很多事情都想通了。
立刻打开微信我的文件,一个人自言自语开始语音转文字。司机时不时眼睛微斜用余光看看我的精神状态是否正常。
现在我的主业是做ai的,曾经的遥感预处理都与我无关。
我是半路做AI的,不妨碍我现在能做出效果很好的应用。
我是真有这个信心,你说AI难吗?也很难,但是很多人都把ai集成为一个工具了,比如yolo,比如sovits
相对来说,模型我都是用开源的,哪个效果好我就用哪一个,我会更花更多的时间在后面的细节处理,在实战中检验效果。
对于初学AI者来说,我觉得更好的理解模型的方式是研究一个很基础模型,然后用笔和纸把模型的结构一层一层的从白纸上面写出来,理解它们这个层层递进的一个处理关系。
以前我写过拆解模型的过程。
【深度学习】从LeNet学神经网络搭建
LeNet很简单,很容易去解析,套路都是惊人的相似的。
再进阶一点,可以按照GPT训练的模式,自己构建一个小的模型。当然,此时学习的是训练的手法,怎么蒸馏等等。
我现在电脑算力不行,等我的5 ...