gpt4 book ai didi

python - 处理IOS上传的照片会得到不同的结果

转载 作者:行者123 更新时间:2023-11-29 05:18:34 25 4
gpt4 key购买 nike

我写这篇文章是为了解开这里发生的谜团的最后一颗子弹。

本质上,我正在开发一个 IOS 应用程序,它将上传一组照片到 Azure,然后在批处理服务中使用 AI 和图像处理来处理它们。

应用程序应将图像上传到 azure 函数,该函数将触发批处理服务,在该服务中完成所有处理,然后将结果存储在存储帐户中。

到目前为止,我所做的所有测试都成功地处理了本地镜像,甚至使我的电脑从云端下载它们并以相同的编码/解码步骤处理它们,直到过程开始。

当我完成整个过程(仅包括前端部分)时,问题就开始了,唯一的区别是图像是从 IOS 而不是我的 PC 上传到函数的,它给出了完全不同(且错误)的结果。

到目前为止我已经测试过的事情:

  • 我能说的最相关的事情是,我下载了一组之前通过 IOS 上传的照片,我从我的电脑重新上传,结果再次正确,所以完全相同的图像,完全相同的过程,给出了非常不同的结果。

  • IOS应用的质量编码器设置为1/1。

  • IOS上传的图像和本地上传的同一张图像的RGB值相差不超过+-3-5...这不能导致我得到的结果。

    <

我用来开始该过程的代码。

generator = block_blob_service.list_blobs(container_name)
front = block_blob_service._get_blob(container_name, blob.name)
b64_bytes_front = np.frombuffer(front.content, dtype=np.uint8)
opencv_front = cv.imdecode(b64_bytes_front, cv.IMREAD_COLOR)
img = opencv_front

正如我所说,我使用相同的代码下载到我的电脑(imwrite 在最后)

我不知道还能做什么,这里有人有类似的经历吗?

非常感谢。

编辑。我知道所有 opencv RGB-BGR 标准。 channel 是正确的,我认为这与首先识别为 jpeg(来自 azure)的图像的解码过程有关,并且同一个图像(未)识别为八位字节应用程序,正如我从 IOS 上传它时显示的那样。我开始猜测这没有解决方案,因为我正在谈论编码/解码步骤的自然损失,但处理的差异太大了

最佳答案

我注意到这一行:opencv_front = cv.imdecode(b64_bytes_front, cv.IMREAD_COLOR)我认为这意味着你正在使用 openCV 并用颜色做一些事情?不久前我遇到了一个问题,发现 openCV 在内部将颜色值存储为 BGR 而不是 RGB。然而,除非您另有说明,否则它确实期望输入为 RGB,并且如果您使用任何 openCV 的文件写入函数,它会自动将格式恢复为 RGB。现在,我相信它会影响你的IOS应用程序的原因是:openCV使用BGR格式,因为它是数码相机使用的格式! (原因可以在这里阅读:https://www.learnopencv.com/why-does-opencv-use-bgr-color-format/)我的猜测是IOS照片/图像存储为BGR,如果您通过应用程序发送它们,当您将它们导出到PC时,它们会作为BGR(按原样)发送,IOS 软件会将其转换为 RGB,这样当您尝试在 PC 上查看照片时,它们看起来就不会很奇怪 - 这可以解释为什么下载到您的 PC 然后重新上传可以解决该问题。

希望这能有所帮助!

关于python - 处理IOS上传的照片会得到不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58915924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com