【问题标题】:Panel.image displays some images with the wrong orientationPanel.image 显示一些方向错误的图像
【发布时间】: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 考虑到它,因为从头开始会非常不愉快。

提前谢谢你,

【问题讨论】:

    标签: java python image


    【解决方案1】:

    在注意到使用 Paint 而不是 Photos 旋转图像得到了我们想要的结果后,我发现了问题所在。

    “如果您使用的是 Windows 10,文件资源管理器和默认图像查看器将正确地遵循 Exif 方向标签,因此来自智能手机或数码相机的照片将正确显示。Google 的 Android 和 Apple 的 iOS 都本机创建带有 Exif 方向标签的照片并支持它。” (source)

    我使用 JPG 自动旋转来解决这个问题。

    【讨论】:

      猜你喜欢
      • 2019-11-27
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 2011-03-21
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多