使用ImageJ将Raw格式图片批量转换为JPG

自动方法:

1,创建一个txt文本文档,然后将下面的代码复制粘贴进去。
2,将代码的第一行path修改为你的raw图片所在的路径,
3,第二行out修改为转换后jpg图片存储路径。
4,完成前2步后,如果你是windows系统,那么需要将路径中所有的反斜杠“\”改成正斜杠“/”,并且路径最后的斜杠不能省略。
5,imageInfo也需要根据你的Raw图片参数进行修改,具体修改方式请参考下方的手动方法。
6,保存文本文档,然后通过ImageJ的Plugins -> Macro -> Edit... 打开该文本文档,然后运行(ctrl+R)即可

//需修改path和out,以及下方的raw的长宽和格式
path = "C:/Users/我是胡锦州/Desktop/ImageJ图片/";
out = "C:/USERS/OUT/";
imageInfo = "image=[16-bit Unsigned] width=1408 height=1408 little-endian"
list = getFileList(path);

for (i = 0; i < list.length; i++) {
    file = path + list[i];
    run("Raw...", "open=" + file + imageInfo);
    saveAs("tiff", out + getTitle());
}

手动方法:

首先打开Plugins -> Macro -> Record,这会打开下图所示的窗口。这个窗口会将你的操作记录成代码。

如下图所示,依次点击File -> Import -> Raw...

注意,不要使用File -> Open,否则虽然可以打开图片,但是使用Record无法记录完整代码。

然后选择你的图片,设置好下图的参数(这里的参数你自己应该清楚),点击OK,然后你的Raw图片就被打开了。并且此时你的Record窗口中将会记录打开Raw文件的代码。下图2中,红框标记的部分(从“image”开始,到引号截止)即为“自动方法”中第5步的imageInfo,

正文已结束!如有疑问欢迎加博主微信w2689115745交流!

import cv2 import numpy as np import matplotlib.pyplot as plt # 基础配置参数 width, height = 288, 512 # 图像尺寸 max_matches = 40 # 最大显示匹配数(防止图像过密) # 1. 读取图像文件 img_i = cv2.imread('f1_1.png', cv2.IMREAD_COLOR) img_j = cv2.imread('kf_1.png', cv2.IMREAD_COLOR) # 2. 读取匹配索引和有效性文件 idx_i2j = np.loadtxt('idx_i2j.txt', dtype=np.float32) valid = np.loadtxt('valid_match.txt', dtype=bool) # 3. 坐标转换函数 def index_to_coord(index): x = int(index) % width y = int(index) // width return (x, y) # 4. 提取有效匹配点对 valid_indices = np.where(valid)[0] np.random.shuffle(valid_indices) # 随机打乱顺序 selected = valid_indices[:min(max_matches, len(valid_indices))] # 5. 创建关键点与匹配关系 kp1, kp2, matches = [], [], [] for i, k in enumerate(selected): # 原始图像坐标 x_i, y_i = index_to_coord(k) # 目标图像坐标 x_j, y_j = index_to_coord(idx_i2j[k]) # 创建关键点对象 kp1.append(cv2.KeyPoint(x_i, y_i, 1)) kp2.append(cv2.KeyPoint(x_j, y_j, 1)) # 创建匹配关系 matches.append(cv2.DMatch(i, i, 0)) # 6. 可视化配置 out_img = np.empty((max(height, height), width*2, 3), dtype=np.uint8) # 7. 绘制匹配结果 cv2.drawMatches(img_i, kp1, img_j, kp2, matches, outImg=out_img, flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS, matchColor=(0, 255, 0), # 绿色连线 singlePointColor=(255, 0, 0)) # 蓝色关键点 # 8. 显示结果(Matplotlib优化显示) plt.figure(figsize=(20, 10)) plt.imshow(cv2.cvtColor(out_img, cv2.COLOR_BGR2RGB)) plt.axis('off') plt.title(f'Keypoint Matches Visualization ({len(selected)}/{len(valid_indices)} valid matches)') plt.show() 现在我编写了以上代码,实现了从四个输入文件(这四个文件是由一个匹配算法从两张图像中获取的,四个文件中的其中两个为png图像输入,图像名为image_i与image_j,输入图像image_i与image_j的宽都为288像素,高度都为512像素;另外两个输入文件为txt文件,其一为idx_i2j.txt文件,是一个包含147456个float元素的图相匹配索引文件,表示image_i到image_j的匹配索引;另一个txt文件名为valid_match_j.txt文件,是一个对应包含147456个布尔值元素的指示匹配索引有效性的文件,以上两个txt文件中的元素都是通过换行分隔的)中可视化点图匹配的功能,能否帮助编写一个代码帮我保存可视化结果?
最新发布
04-02
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值