opencv imread 改变图像

问题描述 投票:0回答:1

我有一个非常基本的测试用例:

#include <opencv2/opencv.hpp>
int main(){
auto image = cv::imread("input.bmp");
cv::imwrite("output.bmp");
}

输入.bmp

输出.bmp

如您所见,它们看起来完全不同。这里发生了什么事?

我尝试使用

cv::imread("input.bmp", -1)
读取图像不变,但这没有帮助。 我尝试过使用其他 bmp 图像,有时它可以工作,但很奇怪。我还没弄清楚什么时候有效,什么时候无效。

编辑:链接到原始文件:https://drive.google.com/file/d/1mG3I-G0sS0qi3QBuvQQK9Oa9yPq1Uoif/view?usp=sharing

image opencv bitmap
1个回答
0
投票

我能够通过使用 imagemagick 库读取和写入相同的图像来规避这个问题。我没有做任何事情,只是用 imagemagick 阅读和写作。然后我可以使用 opencv 读取和写入图像,而无需更改图像。不幸的是,这需要 200 毫秒,所以我宁愿有一个更好的解决方案,但目前它可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.