我对他也有同样的问题:Scaling a matrix in OpenCV
我和他也遇到了同样的问题,我有一张彩色的图片,我用matlab来读取图片:Input = imread('input1.jpg');
,图片的格式是612x612x3 uint8,我在图片中打印5x5x1像素,如下所示:Input(1:5,1:5,1)
201 201 201 201 201
201 201 201 201 201
202 202 202 202 202
203 203 203 203 203
204 204 204 204 204
通过使用mat2gray函数:rgb_out = mat2gray(Input);
,这些像素可以被转换成这个值,它们都在0和1之间:rgb_out(1:5,1:5,1)
所以问题是如何用Python在Opencv中实现这一点,我尝试了以下代码:
print(Input)
rgb_out = np.zeros(Input.shape, np.uint8)
cv2.normalize(Input,rgb_out,1,0,cv2.NORM_MINMAX)
print(rgb_out)
但第一个印刷品是:
[[[205 207 201]
[205 207 201]
[205 207 201]
...,
[232 254 242]
[232 254 242]
[231 253 241]]...
并且rgb_out中的元素不超过1或0。请帮忙,谢谢。在
输入矩阵是整数数据类型,输出矩阵定义为
np.uint8
(整数类型)。默认情况下,cv2.normalize
将返回与输入数据类型相同的结果。如果希望输出值介于0.0
和1.0
之间,则需要使用浮点数据类型。在一种选择是在调用
cv2.normalize
之前将输入和输出转换为np.double
或者,可以通过
^{pr2}$dtype
kwarg将浮点数据类型指定为cv2.normalize
,以强制指定特定的输出数据类型。在相关问题 更多 >
编程相关推荐