2

imshow("result",result)在 opencv 源文件中的 opencv 示例(stitching_detailed.cpp)的末尾添加了,但它不显示图像。如果我将其保存为 .jpg 然后使用 imread 重新打开它会正常工作。有人知道为什么吗?此代码将文件保存在 result.jpg 但不显示图像!!奇怪的!

imwrite("result.jpg", result); namedWindow("resultwindow", WINDOW_AUTOSIZE); imshow("resultwindow", result); waitKey(0);

下面的代码将显示图像,但时间对我来说很重要我不想保存文件然后阅读它(我的项目是实时拼接)

imwrite(result_name, result);
Mat result2=imread("result.jpg");
namedWindow("resultwindow", WINDOW_AUTOSIZE);
imshow("resultwindow", result2);
waitKey(0);

这真的很奇怪。试试看 。你会看到,请任何人帮助我哪里错了?!如何在stitching_Detailed.cpp 中显示拼接图像?

4

1 回答 1

1

实际上,这不是一个错误。result是 的 3 通道矩阵int16,你不能用它来显示它imshow(它显示一个灰色图像)。

只需将其转换为常规 Mat3b,例如:

Mat3b visibleResult;
convertScaleAbs(result, visibleResult);
imshow("visibleResult", visibleResult);
waitKey();

你应该可以看到它。

希望能帮助到你!

于 2015-07-01T14:01:24.977 回答