【发布时间】:2019-05-18 12:04:10
【问题描述】:
我们正在使用 Tensorflow 来训练图像数据集。 为了获取图像,我们使用手机录制视频,并使用 Python 中的 OpenCV 提取每一帧并将它们保存为 JPG 图像。我使用 Windows 10 上的照片应用程序将其中一些旋转到纵向模式。
然后,我们有自己的用 Java 编写的注释工具来标记我们在图像上看到的每个项目。它为每个对象返回一个 CSV 文件及其坐标(百分比)。
但是,当我昨天进行训练时,我通过 tensorboard 界面注意到有些没有正确注释(我用照片旋转的那些)
这是在 Tensorboard 上打开的图片,你可以看到罐头的注释非常糟糕。
事实证明,如果我用我们的 Java 软件打开这张图片,它会得到很好的注释,但正如你在下面看到的,图片是水平的(它没有考虑到照片应用的旋转):
如果我用 Paint 或资源管理器打开它,它会像在 tensorboard 中那样以纵向模式显示。
另外一个事实,如果我通过 Facebook 发送图片,然后再次下载,它将在 Java 工具上以纵向模式显示,就像从一开始一样。
我这次尝试用 Paint 旋转图像,它在 Java 工具中正确显示。
用Java显示图像的代码:
panel.image = New File(srcFile);
Python中保存视频帧的代码:
cap = cv.VideoCapture(video_path)
while cap.isOpened():
ret, frame = cap.read()
if ret:
try:
cv.imwrite(output_img_path, frame)
except Exception:
pass
else:
break
cap.release()
你知道为什么 Java 会忽略通过 Win10 Photos 软件应用的旋转,为什么它会通过 Paint 起作用吗?
有没有办法让 Java 考虑到它,因为从头开始会非常不愉快。
提前谢谢你,
【问题讨论】: