最新的SAM2分割大模型(Segment Anything Model 2)是由Meta开发的一个先进的图像和视频分割模型。相比于第一代SAM模型,SAM2在多个方面实现了显著的改进。
下面记录一下我是怎么安装sam的,在这个过程中遇到的问题及解决方案。我已经安装好了conda。
要求系统安装有 Python ≥ 3.10、PyTorch ≥ 2.3.1 和与PyTorch 安装相匹配的torchvision。
步骤下载sam2的文件,要么是git下载,要么在github下载zip
我是直接在github下载的,因为这台电脑没有安装git,也懒得安装。
下载好之后,对这个压缩进行解压,激活项目环境。
使用conda建立一个python版本大于3.10的虚拟环境。sam2要求python版本大于等于3.10.0
不然会报错:
ERROR: Package 'sam-2' requires a different Python: 3.9.19 not in '>=3.10.0'
所以我们建立一个3.11版本的python虚拟环境就好。
conda create --name sam ...
对于大的遥感影像文件,在QGIS或ArcGIS中,都可以通过建金字塔的方式,提供其加载速度。通常情况,将遥感影像加载到ArcGIS中,软件会提示是否构建金字塔,同意构建金字塔后,影像的对应文件夹下会生成一个ovr类型的影像金字塔文件,提高影像加载速度。
什么是遥感影像金字塔文件呢?如何通过代码建立金字塔文件呢?
什么是影像金字塔在GDAL中,金字塔(Pyramids)是一种用于栅格数据的方法,它通过创建原始影像数据的缩略图来加快显示和分析速度。每个金字塔层级都是原始影像的一个较小版本,具有更少的像素和较低的分辨率。
金字塔的主要用途包括:
快速浏览:在查看大尺寸影像时,金字塔允许用户快速浏览而不需要加载整个高分辨率影像。
地理空间分析:在进行某些地理空间分析时,可能不需要最高分辨率的数据,金字塔可以提供足够用的数据而减少计算量。
改善性能:使用金字塔可以改善地图渲染和地理信息系统(GIS)软件的性能。
对于未经压缩的栅格数据,.ovr 文件大小约为原始栅格数据集大小的 8%。
实现可以用GDAL中的gdaladdo方法,内建金字塔,或者建外部金字塔。
内建金字塔gdaladdo ...
之前写过分块进行16位转8位的程序。今天使用一景大影像进行处理,发现程序报错了。
原因是,影像太大了,numpy一下子不能读取到矩阵的百分之二最小值和百分之98最大值。报错的代码如下:
global_min = np.percentile(array_data, 2)
global_max = np.percentile(array_data, 98)
改进numpy.percentile() 是一个非常通用且强大的函数,但它可能不是性能最优的选择,尤其是在处理大数据集时。
使用 numpy.partition() 代替,numpy.percentile()
def fast_percentile(arr, percentile):
# 将百分位转换为索引位置
k = int((percentile / 100.0) * arr.size)
# 使用 partition 函数来找到第k小的元素
part = np.partition(arr.flatten(), k)[:k]
return part[-1]
chunk_array = nump ...
一开始使用以下语句打包:
pyinstaller -F simplify.py
运行打包后的exe闪退,报错信息如下:
Traceback (most recent call last):
File "vector_simplify.py", line 673, in <module>
vector2simplify(a, b, c)
File "vector_simplify.py", line 643, in vector2simplify
find_intersections(shape_path, common_line)
File "vector_simplify.py", line 145, in find_intersections
gdf = gpd.read_file(shp_path)
File "geopandas\io\file.py", line 255, in _read_file
File "geopandas\io\file.py", line 114, in _check_engine
Impor ...
记录一下如何进行2000坐标系转化为wgs84坐标系的过程。
在处理矢量数据转换的过程中,有几个关键步骤确保了数据的有效性和可用性。
首先,在转换之前,通过检查并创建目标保存目录,保证了正确的目录结构,这对于避免转换失败或产生错误输出至关重要。
接着,通过osr.SpatialReference对象定义目标坐标系,并使用ImportFromEPSG()方法设置EPSG代码,确保了转换后的数据能够在地理信息系统中正确显示。
此外,通过selectFields参数可以选择性地保留某些字段,而geometryType参数则定义了输出文件中的几何类型,这些选项使用户可以根据具体需求定制输出文件。
重投影选项reproject=True指示GDAL/OGR进行坐标系转换,这对于整合不同坐标系下的数据至关重要。
最后,通过dim参数可以控制输出数据的维度,例如仅保留X和Y坐标,这对于某些特定应用场景是必要的。这些步骤共同构成了一个完整的矢量数据转换流程,确保了数据的准确性和实用性。
具体代码如下:
from osgeo import ogr, gdal
from osgeo import osr ...
本文主要介绍图像特征点匹配众多方法中的sift算法。这是几年前写的代码,现在再回看发现很多内容我不记得了,记忆被删除了一样。但是,当时记录好了,也把代码、数据备份了,现在一边运行、一边查资料,很快就把这段代码捡起来了。话不多说,直接进入今天主题。
航片拼接、点云生成、SFM不可绕过的是特征点匹配。而特征点匹配中最经典、有效、稳定的方法是sift算法。我们有必要去学习一下这个sift算法。
下面是一个利用python语言调用opencv中的算法的示例。
输入图像1:
输入图像2:
具体代码如下:
# -*- coding: utf-8 -*-
# @Time : 2021/3/10 20:11
import numpy as np
import cv2
'''
sift practice code 1
'''
class SIFT():
def img_sift(self, file1, file2):
sift = cv2.xfeatures2d.SIFT_create()
img1 = cv2.imread(file1)
...
针对部分小工具用户反馈:由于Cannot find proj.db,导致小工具闪退。
这个问题困扰了我许久,debug的第一步是复现bug,而我的电脑不存在这个bug。
造成这个闪退问题的根本原因是,打包后的EXE文件找不到proj.db的位置。
也就是说在你的电脑的环境变量里没有这个proj.db的文件。
经过几番测试,我选择最保险的一个方法,即外挂proj.db,通过将proj的包放在exe文件的同级目录下的方式,进行补救。在运行exe时,自动把当前的路径设置为环境变量。
打包操作首先在主程序的同文件夹下,新建一个hook.py文件:
import os
import sys
os.environ['PROJ_LIB'] = os.path.dirname(sys.argv[0])
然后运行以下语句:
pyinstaller -F AerialCorrection.py
运行完成后,会生成一个AerialCorrection.spec文件。
修改AerialCorrection.spec文件,把hook.py添加到runtime_hooks。如下:
# -*- mode: pyth ...
39.多源遥感影像数据融合的主要优点是( )。A.可以自动确定多种传感器影像的外方位元素 B.可以充分发挥各种传感器影像自身的特点 C.可以提高影像匹配的速度 D.可以自动发现地物的变化规律答案: B
40.推扫式线阵列传感器的成像特点是( )。A.每一条航线对应着一组外方位元素 B.每一条扫描行对应着一组外方位元素 C.每一个像元对应着一组外方位元素 D.每一幅影像对应着一组外方位元素答案: B
41.基于共线方程所制作的数字正射影像上仍然存在投影差的主要原因是( )。A.计算所使用的共线方程不严密 B.地面上的建筑物太多 C.计算所使用 DEM没有考虑地面目标的高度 D.地形的起伏太大答案: C
42.对航空摄影机进行检校的主要目的之一是为了精确获得摄影机( )的值。A.内方位元素 B.变焦范围 C.外方位线元素 D.外方位角元素答案: A
43.数字航空摄影中,地面采样间隔(GSD)表示( )。A.时间分辨率 B.光谱分辨率 C.空间分辨率 D.辐射分辨率答案: C
44.对平坦地区航空摄影而言,若航向重叠度为60%,旁向重叠度为30%,那么,航摄像片所能达到的最大重叠像片数为( ...
1.地球椭球的真子午线与中央子午线的差值,被称为( )。A磁偏角 B垂线偏差 C子午线收敛角 D真北方位角答案: C
2.观测水平角或竖直角时,不能通过盘左盘右取平均值的观测方法来消除的误差是( )。A视准轴误差 B对中误差 C度盘偏心差 D指标差答案: B
3.水准测量要求前后视距大致相等目的在于削弱( )影响。A圆水准器轴与竖轴不平行的误差 B十字横丝不垂直于竖轴的误差 C读数误差 D水准管轴与视准轴不平行的误差答案: D
4.水准测量的高程是( )。A正常高 B正高 C大地高 D椭球高答案: A
5.GPS网的内符合精度应通过( )作业检验环节得到。A约束平差 B无约束平差 C联合平差 D同步环闭合差答案: B
6.平面控制的坐标系统,应满足测区内投影长度变形值不大于( )每公里。A ±2cm B ±2.5cm C ±3cm D ±3.5cm答案: B
7.现行规范规定,下列时间段中,水平角观测的有利时间是( )。A日出1小时和下午3小时 B日出1.5小时和下午3 4小时 C日出1 2小时或午后3 4小时至日落1小时,阴天不测 D日出1 2小时或午后3 4小时至日落1小时,阴天全 ...
1.下列坐标系中,所釆用的地球椭球长半径为6378140米的是( )。A.1954北京坐标系 B.1980西安坐标系 C.WGS-84坐标系 D.2000国家大地坐标系答案: B
2.下列性质中,属于高斯-克吕格投影的特点的是( )。A.保持面积不变 B.保持长度不变 C.保持角度不变 D.保持方位不变答案: C
3.过地面一点的铅垂线和法线之间的夹角称为( )。A.子午线收敛角 B.垂线偏差 C.磁偏角 D.大地方位角答案: B
4.现行规范规定,编写测绘技术设计书时,下列依据中,属于设计输入的是( )。A.作业方法 B.设计书附图 C.生产进度安排 D.适用的国家技术标准答案: D
5.水准测量中,下列措施中,可以削弱水准仪i角误差的影响的是( )。A.保持测段内测站数为偶数 B.保持前后视距基本相等 C.釆用前-后-后-前顺序观测 D.釆用后-前-前-后顺序观测答案: B
6.一.二等水准路线中进行重力测量的目的是( )。A.高程异常改正 B.重力水平梯度 C.重力垂直梯度 D.重力异常改正答案: D
7.为求定GPS点在某一参考坐标系中的平面坐标,应与该参考坐标系中的原有控制点 ...