我想使用 OpenCV 在 Python 中将 CV_64FC1
类型的图像转换为 CV_8UC1
。
在 C++ 中,使用 convertTo
函数,我们可以使用以下代码片段轻松转换图像类型:
image.convertTo(image, CV_8UC1);
我在互联网上搜索过,但找不到任何没有错误的解决方案。 Python OpenCV中的任何函数可以转换它吗?
原文由 Jazz 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于那些出现黑屏或大量噪点的用户,您需要先对图像进行标准化,然后再转换为 8 位。这是直接使用 numpy 完成的,因为 OpenCV 使用 numpy 数组作为其图像。
在标准化之前,图像的范围是从 4267.0
到 -4407.0
在我的例子中。现在规范化:
# img is a numpy array/cv2 image
img = img - img.min() # Now between 0 and 8674
img = img / img.max() * 255
现在图像在 0 到 255 之间,我们可以转换为 8 位整数。
new_img = np.uint8(img)
这也可以通过 img.astype(np.uint8)
来完成。
原文由 Ani Aggarwal 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
您可以将其转换为 Numpy 数组。
似乎 OpenCV Python API 也接受 Numpy 数组。我还没有测试过。请测试它并让我知道结果。