gpt4 book ai didi

c++ - Windows 上用于非 ASCII 文件名的 opencv imread()

转载 作者:可可西里 更新时间:2023-11-01 15:06:25 27 4
gpt4 key购买 nike

我们有一个 OpenCV 问题,即在 Windows 上打开(和写入)包含非 Ascii 字符的文件路径。我看到问题OpenCV imread with foreign charactersimread(openCV),QString unicodes但仍然不明白解决问题的正确方法。

据我在 OpenCV 源代码中所见,它甚至在 Windows 上使用 fopen(而不是 _wfopen),而 afaik fopen 不处理 Windows 上的非 ASCII 字符。从上面的问题中,我看到使用 QString 可能有一些技巧,但如果它有效,它到底做了什么?它如何将 unicode 字符串转换为将被 Windows 的 fopen() 接受的字符数组?

附言我们不用QT

提前致谢!

最佳答案

在不破解 OpenCV 源代码的情况下执行此操作的方法是使用 _wfopen(如 Remy 所建议的那样)将整个文件读入内存缓冲区。然后使用OpenCV的函数imdecode从该缓冲区创建一个 cv::Mat

如有必要,您也可以反其道而行之 - 即使用 imencode将图像写入内存缓冲区,然后使用 _wfopen 打开一个具有 UNICODE 名称的文件并将缓冲区写入它(或者,您可以将 imwrite 写入临时文件文件,然后使用适当的 API 函数移动/重命名它)。

关于c++ - Windows 上用于非 ASCII 文件名的 opencv imread(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24769623/

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