读取siftgeo格式文件的matlab程序

% This function reads a siftgeo binary file %读取siftgeo格式的二进制文件
%
% Usage: [v, meta] = siftgeo_read (filename, maxdes)
%   filename    the input filename
%   maxdes      maximum number of descriptors to be loaded 要加载的描述子最大数量
%   (default=unlimited)%默认无限制
%
% Returned values %返回值
%   v           the sift descriptors (1 descriptor per line) %每行一个sift描述子
%   meta        meta data for each descriptor, i.e., per line: %每个描述子的元数据
%               x, y, scale, angle, mi11, mi12, mi21, mi22, cornerness
function [v, meta] = siftgeo_read (filename, maxdes) 

if nargin < 2 %nargin:number of arguments input %nargout:number of arguments ouput
  maxdes = 100000000; %1亿
end

% open the file and count the number of descriptors
fid = fopen (filename, ‘r‘);

fseek (fid, 0, 1); %fseek(fid, 0, ‘eof‘); 跳到文件末尾 %‘bof‘ or -1   Beginning of file;  ‘cof‘ or  0   Current position in file;  ‘eof‘ or  1   End of file
n = ftell (fid) / (9 * 4 + 1 * 4 + 128); %n是descriptors的数量 %return the current position (number of bytes from the file beginning)
fseek (fid, 0, -1); %fseek(fid, 0, ‘bof‘) 跳到文件开头

if n > maxdes
  n = maxdes;
end;

% first read the meta information associated with the descriptor
meta = zeros (n, 9, ‘single‘); %n*9矩阵
v = zeros (n, 128, ‘single‘); %n*128矩阵

% read the elements
for i = 1:n %n是要读区的descriptors数量
  meta(i,:) = fread (fid, 9, ‘float‘); %(float)*9 元数据信息
  d = fread (fid, 1, ‘int‘); %(int)*1
  v(i,:) = fread (fid, d, ‘uint8=>single‘); %(uint8=>single)*d 描述子
end

fclose (fid);

  

时间: 2024-12-28 18:30:47

读取siftgeo格式文件的matlab程序的相关文章

matlab读取.mat格式文件

matlab读取.mat格式文件 13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存.导入和文件打开.13.1.1 文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入.保存工作区可以通过菜单进行,也可以通过命令窗口进行. 1. 保存整个工作区 选择File菜单中的Save Workspace As…命令,或者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件. 2. 保存工作区中的变量 在工作区浏览

如何用.net c# 读取epub格式文件

如何用.net(c#)读取epub格式文件 epub格式是印刷出版界常见的格式,本格式遵循XML原则把网页进行压缩打包. 如何用c#读取epub格式文件是个头疼的问题,本人搜遍各大网站,发现介绍都语焉不详. 因项目中要用的此功能,特做案例整理如下,仅供参考. // 动态库下载地址 https://epubreader.codeplex.com/,添加引用eBdb.EpubReader.dll // 头部增加引用 using eBdb.EpubReader; string fullfile = @

读取xml格式文件

$v = [xml]get-content d:\vmconfig.xml $v.Domain.Computer.Name vmconfig.xml内容: <?xml version="1.0" encoding="UTF-8"?><Domain><Computer><Name>stcmm-vm-s01</Name><IpAddress>192.168.0.2</IpAddress>

Python读取jsonlines格式文件

Python读取jsonlines格式文件 json lines文件是一种便于存储结构化数据的格式,可以一次处理一条记录.可以用作日志文件或者其他.每条json数据之间存在一个"\n"分隔符. 具体信息可以查看http://jsonlines.org/ 之前爬虫存储数据,使用了这个格式文件,但是在读取的时候,Python内置的json函数,会进行报错: 在网上找到了两个库: 1.jsonlines,文档:https://jsonlines.readthedocs.io/en/lates

python 读取固定格式文件

环境:这几天在使用python开发程序的过程中,需要连接到mysql数据库,而且涉及到不同的服务器和不同的数据库,前期使用测试服来做测试,不想在python程序里频繁去更改数据库的配置信息,于是想到将全部的数据库配置写进一个db.conf文件里去读取,也是基于安全性的考虑. 于是写了一个基于固定格式的文件读取程序,案例如下. 测试文件内容: title1 1,line 1 2,line 2 3,line 3 title2 4,line 4 5,line 5 6,line 6 title3 7,l

SHELL读取 ini 格式文件做配置文件

ini文件格式一般都是由节.键.值三部分组成 格式: [第一节 ] 第一个键 = 值 第二个键 = 第二个值 [第二节 ] 第一个键 = val1,val2,val3 例子: [COM] KINGGOO = kinggoo.com 其实这个作用没那么特别大,但多个shell如果每个配置信息都在shell文件里面写,懂的人还好,半懂+不仔细的人要如何改,改几个地方估 计脚本就不能运行了.所以这样单独哪出来比较好些,而且可以多个shell使用一个ini文件(与扩展名无关)来做配置也可以的.只需要在s

Qt读取ANSI格式文件——利用QTextCodec将其他编码格式的QByteArray转换为Unicode格式,或者从文件中读出后直接做转换

t使用Unicode来表示字符串.但是通常需要访问一些非Unicode格式的字符串,例如打开一个GBK编码的中文文本文件,甚至一些非Unicode编码的日文,俄文等. Qt提供了QTextCodec类用于不同编码格式之间的转换.关于Qt字符串格式转换以及QTextCodec的使用方式,网上有很多资料.其中大多数看起来很复杂,甚至根本无法完成转换工作,或者是基于较低的Qt版本编写.因此,有必要对使用QTextCodec完成字符串格式转换进行简要说明,本文中代码基于Qt5.1编写. 其实,在Qt帮助

Qt读取ANSI格式文件——利用QTextCodec将其他编码格式转换为Unicode格式

Qt使用Unicode来表示字符串.但是通常需要访问一些非Unicode格式的字符串,例如打开一个GBK编码的中文文本文件,甚至一些非Unicode编码的日文,俄文等. Qt提供了QTextCodec类用于不同编码格式之间的转换.关于Qt字符串格式转换以及QTextCodec的使用方式,网上有很多资料.其中大多数看起来很复杂,甚至根本无法完成转换工作,或者是基于较低的Qt版本编写.因此,有必要对使用QTextCodec完成字符串格式转换进行简要说明,本文中代码基于Qt5.1编写. 其实,在Qt帮

opencv不能读取MP4格式文件

用opencv对视频进行处理时,不能打开.mp4格式的文件.后来解决办法是用ffmpeg.exe将mp4文件转码为avi文件,然后再进行处理.但是转码过程比较慢.后来查看opencv源代码,发现它也是用ffmpeg库进行视频解码的,那应该也可以直接读取MP4文件才对.在stackflow上找到了解决方法:将opencv安装包的opencv_ffmpeg.dll文件拷贝到相应的工程文件夹内就可以了.亲测可用. 版权声明:本文为博主原创文章,未经博主允许不得转载.