• 读取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);
    

      

  • 相关阅读:
    集算器如何优化SQL计算(2)分组
    集算器如何优化SQL计算(1)动态列
    android DOM解析Xml
    ASP.NET 抓取网页内容
    抓取HTML网页数据
    [转]Android的网络与通信
    Android的三种网络通信方式
    Android通过onDraw实现在View中绘图操作
    Android Canvas类介绍
    DatabaseMetaData的用法(转)
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/4631329.html
Copyright © 2020-2023  润新知