用Python在Opencv中实现mat2gray

2024-10-01 13:25:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我对他也有同样的问题: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)

^{pr2}$

所以问题是如何用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。请帮忙,谢谢。在


Tags: ininputnp图片rgb像素outcv2
1条回答
网友
1楼 · 发布于 2024-10-01 13:25:10

输入矩阵是整数数据类型,输出矩阵定义为np.uint8(整数类型)。默认情况下,cv2.normalize将返回与输入数据类型相同的结果。如果希望输出值介于0.01.0之间,则需要使用浮点数据类型。在

一种选择是在调用cv2.normalize之前将输入和输出转换为np.double

A = np.double(A)
out = np.zeros(A.shape, np.double)
normalized = cv2.normalize(A, out, 1.0, 0.0, cv2.NORM_MINMAX)

或者,可以通过dtypekwarg将浮点数据类型指定为cv2.normalize,以强制指定特定的输出数据类型。在

^{pr2}$

相关问题 更多 >