Read .PFM images

PFM格式常用于生物医学成像和红外成像,因其浮点存储方式适合科研和学习。它由头信息(包括标识符和大小)和浮点数元数据组成。Middlebury数据库中的视差图像采用此格式。cvkit是一款推荐的工具,可以查看PFM文件并处理Middlebury的双目图像。
function D = pfmread(filename_pfm)
 
fid = fopen(filename_pfm);
 
fscanf(fid,'%c',[1,3]);
cols = fscanf(fid,'%f',1);
rows = fscanf(fid,'%f',1);
fscanf(fid,'%f',1);
fscanf(fid,'%c',1);
D = fread(fid,[cols,rows],'single');
D(D == Inf) = 0;
D = rot90(D);
fclose(fid);
 
function pfmwrite(D, filename)
% assert(size(D, 3) == 1 & (isa(D, 'single') ));
 
[rows, cols] = size(D);
scale = -1.0/ max(max(D));
fid = fopen(filename, 'wb');
 
fprintf(fid, 'Pf\n');
fprintf(fid, '%d %d\n', cols, rows);
fprintf(fid, '%f\n', scale);
%fscanf(fid, '%c', 1);
 
fwrite(fid, D(end:-1:1, :)', 'single');
fclose(fid);
end

关于pfm格式,从来没有官方权威的定义,但是常常在一些场合用到,如生物医学成像,红外成像等,尤其是其浮点方式的存储的位图使得其在科研和学习场合应用都很方便,Middlebury数据库中的视差图像就是以pfm格式进行存储的。

一、PMF格式

        PMF格式主要有两部分组成:头、元数据。

头有三行:

        第一行,标识灰度、彩色的头,PF代表彩色三通道,Pf代表灰度单通道。

        第二行,标识图像大大小,行-列。

&

D:\华为云盘\yolo\.venv\Scripts\python.exe D:\华为云盘\yolo\yolov11.py Ultralytics 8.3.217 Python-3.12.2 torch-2.9.0+cpu CPU (13th Gen Intel Core i7-13700H) engine\trainer: agnostic_nms=False, amp=True, augment=False, auto_augment=randaugment, batch=8, bgr=0.0, box=7.5, cache=False, cfg=None, classes=None, close_mosaic=160, cls=0.5, compile=False, conf=None, copy_paste=0.0, copy_paste_mode=flip, cos_lr=False, cutmix=0.0, data=data.yaml, degrees=0.0, deterministic=True, device=cpu, dfl=1.5, dnn=False, dropout=0.0, dynamic=False, embed=None, epochs=200, erasing=0.4, exist_ok=False, fliplr=0.5, flipud=0.0, format=torchscript, fraction=1.0, freeze=None, half=False, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, imgsz=640, int8=False, iou=0.7, keras=False, kobj=1.0, line_width=None, lr0=0.01, lrf=0.01, mask_ratio=4, max_det=300, mixup=0.0, mode=train, model=D:\\yolo\yolo11n.pt, momentum=0.937, mosaic=1.0, multi_scale=False, name=exp14, nbs=64, nms=False, opset=None, optimize=False, optimizer=SGD, overlap_mask=True, patience=100, perspective=0.0, plots=True, pose=12.0, pretrained=True, profile=False, project=runs/train, rect=False, resume=False, retina_masks=False, save=True, save_conf=False, save_crop=False, save_dir=D:\\yolo\runs\train\exp14, save_frames=False, save_json=False, save_period=-1, save_txt=False, scale=0.5, seed=0, shear=0.0, show=False, show_boxes=True, show_conf=True, show_labels=True, simplify=True, single_cls=False, source=None, split=val, stream_buffer=False, task=detect, time=None, tracker=botsort.yaml, translate=0.1, val=True, verbose=True, vid_stride=1, visualize=False, warmup_bias_lr=0.1, warmup_epochs=3.0, warmup_momentum=0.8, weight_decay=0.0005, workers=4, workspace=None Overriding model.yaml nc=80 with nc=3 from n params module arguments 0 -1 1 464 ultralytics.nn.modules.conv.Conv [3, 16, 3, 2] 1 -1 1 4672 ultralytics.nn.modules.conv.Conv [16, 32, 3, 2] 2 -1 1 6640 ultralytics.nn.modules.block.C3k2 [32, 64, 1, False, 0.25] 3 -1 1 36992 ultralytics.nn.modules.conv.Conv [64, 64, 3, 2] 4 -1 1 26080 ultralytics.nn.modules.block.C3k2 [64, 128, 1, False, 0.25] 5 -1 1 147712 ultralytics.nn.modules.conv.Conv [128, 128, 3, 2] 6 -1 1 87040 ultralytics.nn.modules.block.C3k2 [128, 128, 1, True] 7 -1 1 295424 ultralytics.nn.modules.conv.Conv [128, 256, 3, 2] 8 -1 1 346112 ultralytics.nn.modules.block.C3k2 [256, 256, 1, True] 9 -1 1 164608 ultralytics.nn.modules.block.SPPF [256, 256, 5] 10 -1 1 249728 ultralytics.nn.modules.block.C2PSA [256, 256, 1] 11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] 12 [-1, 6] 1 0 ultralytics.nn.modules.conv.Concat [1] 13 -1 1 111296 ultralytics.nn.modules.block.C3k2 [384, 128, 1, False] 14 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] 15 [-1, 4] 1 0 ultralytics.nn.modules.conv.Concat [1] 16 -1 1 32096 ultralytics.nn.modules.block.C3k2 [256, 64, 1, False] 17 -1 1 36992 ultralytics.nn.modules.conv.Conv [64, 64, 3, 2] 18 [-1, 13] 1 0 ultralytics.nn.modules.conv.Concat [1] 19 -1 1 86720 ultralytics.nn.modules.block.C3k2 [192, 128, 1, False] 20 -1 1 147712 ultralytics.nn.modules.conv.Conv [128, 128, 3, 2] 21 [-1, 10] 1 0 ultralytics.nn.modules.conv.Concat [1] 22 -1 1 378880 ultralytics.nn.modules.block.C3k2 [384, 256, 1, True] 23 [16, 19, 22] 1 431257 ultralytics.nn.modules.head.Detect [3, [64, 128, 256]] YOLO11n summary: 181 layers, 2,590,425 parameters, 2,590,409 gradients, 6.4 GFLOPs Transferred 448/499 items from pretrained weights Freezing layer 'model.23.dfl.conv.weight' train: Fast image access (ping: 0.10.0 ms, read: 1689.2651.2 MB/s, size: 773.5 KB) train: Scanning D:\ProgramData\biaozhu2\biaozhu2\train\labels.cache... 1449 images, 1 backgrounds, 0 corrupt: 100% ━━━━━━━━━━━━ 1449/1449 0.0s Traceback (most recent call last): File "D:\华为云盘\yolo\.venv\Lib\site-packages\ultralytics\data\base.py", line 180, in get_img_files assert im_files, f"{self.prefix}No images found in {img_path}. {FORMATS_HELP_MSG}" AssertionError: val: No images found in D:\ProgramData\biaozhu2\biaozhu2\train\labels. Supported formats are: images: {'mpo', 'tif', 'dng', 'jpg', 'heic', 'tiff', 'png', 'pfm', 'webp', 'bmp', 'jpeg'} videos: {'mpg', 'mpeg', 'mp4', 'avi', 'm4v', 'wmv', 'ts', 'mkv', 'webm', 'asf', 'mov', 'gif'} The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\华为云盘\yolo\yolov11.py", line 8, in <module> model.train(data=r'data.yaml', File "D:\华为云盘\yolo\.venv\Lib\site-packages\ultralytics\engine\model.py", line 800, in train self.trainer.train() File "D:\华为云盘\yolo\.venv\Lib\site-packages\ultralytics\engine\trainer.py", line 238, in train self._do_train() File "D:\华为云盘\yolo\.venv\Lib\site-packages\ultralytics\engine\trainer.py", line 359, in _do_train self._setup_train() File "D:\华为云盘\yolo\.venv\Lib\site-packages\ultralytics\engine\trainer.py", line 323, in _setup_train self.test_loader = self.get_dataloader( ^^^^^^^^^^^^^^^^^^^^ File "D:\华为云盘\yolo\.venv\Lib\site-packages\ultralytics\models\yolo\detect\train.py", line 97, in get_dataloader dataset = self.build_dataset(dataset_path, mode, batch_size) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\华为云盘\yolo\.venv\Lib\site-packages\ultralytics\models\yolo\detect\train.py", line 80, in build_dataset return build_yolo_dataset(self.args, img_path, batch, self.data, mode=mode, rect=mode == "val", stride=gs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\华为云盘\yolo\.venv\Lib\site-packages\ultralytics\data\build.py", line 134, in build_yolo_dataset return dataset( ^^^^^^^^ File "D:\华为云盘\yolo\.venv\Lib\site-packages\ultralytics\data\dataset.py", line 90, in __init__ super().__init__(*args, channels=self.data.get("channels", 3), **kwargs) File "D:\华为云盘\yolo\.venv\Lib\site-packages\ultralytics\data\base.py", line 117, in __init__ self.im_files = self.get_img_files(self.img_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\华为云盘\yolo\.venv\Lib\site-packages\ultralytics\data\base.py", line 182, in get_img_files raise FileNotFoundError(f"{self.prefix}Error loading data from {img_path}\n{HELP_URL}") from e FileNotFoundError: val: Error loading data from D:\ProgramData\biaozhu2\biaozhu2\train\labels See https://docs.ultralytics.com/datasets for dataset formatting guidance. 进程已结束,退出代码为 1
最新发布
10-20
`FAILED: ninja: .pfm missing` 错误通常在安卓编译过程中与 `ninja` 构建系统相关,以下是一些可能的解决办法: ### 清理构建缓存 构建缓存可能会导致一些不一致的问题,清理缓存并重新开始编译可以解决此类问题。可以使用以下命令清理缓存: ```bash make clean ``` 或者更彻底地清理: ```bash rm -rf out ``` 清理完成后,重新启动编译过程。 ### 更新 `ninja` 旧版本的 `ninja` 可能存在一些 bug,更新到最新版本可能会解决问题。可以使用包管理器更新 `ninja`,例如在 Ubuntu 上: ```bash sudo apt-get update sudo apt-get install ninja-build ``` ### 检查环境变量 确保环境变量设置正确,特别是 `PATH` 变量。可以使用以下命令查看 `PATH` 变量: ```bash echo $PATH ``` 确保 `ninja` 所在的目录在 `PATH` 中。 ### 检查依赖项 确保所有编译所需的依赖项都已正确安装。可以参考安卓官方文档来安装必要的依赖项。例如,在 Ubuntu 上: ```bash sudo apt-get install openjdk-8-jdk git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \ lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev \ libxml2-utils xsltproc unzip ``` ### 检查文件权限 确保编译目录和相关文件的权限设置正确。可以使用以下命令修复权限问题: ```bash chmod -R 755 . ``` ### 检查磁盘空间 确保磁盘有足够的空间来完成编译过程。可以使用以下命令查看磁盘使用情况: ```bash df -h ``` ### 重新同步代码 如果代码存在损坏或不一致的情况,重新同步代码可能会解决问题。可以使用以下命令重新同步代码: ```bash repo sync ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值