Jaz*_*azz 10 c++ python opencv numpy
我想使用OpenCV 将类型的图像转换CV_64FC1
为CV_8UC1
Python.
在C++中,使用convertTo
函数,我们可以使用以下代码片段轻松转换图像类型:
image.convertTo(image, CV_8UC1);
Run Code Online (Sandbox Code Playgroud)
我在互联网上搜索但无法找到任何没有错误的解决方案.Python OpenCV中的任何函数都可以转换它吗?
fro*_*tto 15
您可以将其转换为Numpy数组.
import numpy as np
# Convert source image to unsigned 8 bit integer Numpy array
arr = np.uint8(image)
# Width and height
h, w = arr.shape
Run Code Online (Sandbox Code Playgroud)
似乎OpenCV Python API也接受Numpy数组.我没有测试过它.请测试一下,让我知道结果.
对于出现黑屏或大量噪音的情况,您需要先对图像进行标准化,然后再转换为 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
Run Code Online (Sandbox Code Playgroud)
现在图像在 0 到 255 之间,我们可以转换为 8 位整数。
new_img = np.uint8(img)
Run Code Online (Sandbox Code Playgroud)
这也可以通过 来完成img.astype(np.uint8)
。
归档时间: |
|
查看次数: |
17205 次 |
最近记录: |