26

我正在创建一个图像:

image = np.empty(shape=(height, width, 1), dtype = np.uint16)

之后,我将图像转换为 BGR 模型:

image = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)

我想现在将图像转换为 adtype = np.uint8以便将该图像与cv2.threshold()功能一起使用。我的意思是,我想将图像转换为CV_8UC1.

4

2 回答 2

37

你可以使用cv2.convertScaleAbs这个问题。请参阅文档。

查看下面的命令终端演示:

>>> img = np.empty((100,100,1),dtype = np.uint16)
>>> image = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

>>> cvuint8 = cv2.convertScaleAbs(image)

>>> cvuint8.dtype
dtype('uint8')

希望能帮助到你!!!

于 2012-07-05T15:04:44.803 回答
10

我建议你使用这个:

outputImg8U = cv2.convertScaleAbs(inputImg16U, alpha=(255.0/65535.0))

这将输出一个 uint8 图像并相对于 0-65535 之间的先前值分配 0-255 之间的值

exemple :
pixel with value == 65535 will output with value 255 
pixel with value == 1300 will output with value 5 etc...
于 2014-02-14T11:35:18.587 回答