将三维数组转换为RGB值数组

2024-03-29 07:17:56 发布

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

我有一个像

[[[110403 676632 105064]
  [149110 204334 829800]
  [  1806    754   9555]]

 [[704375  27060 189080]
  [168544  93786 254782]
  [ 37446  23754 206955]]

 [[466900  34404 163800]
  [125518  84350 234913]
  [148988 841662 535410]]]

我希望将整个数组转换为与0-255相关的值,而不是直接将值剪裁为255。例如,如果我有一个数字7014,我希望它在0-255之间。你知道吗

我试过很多变种,但都没有成功了。就像你知道吗

cv.cvtColor(result, cv.COLOR_BGR2GRAY)

&

np.dot(result, [0.299, 0.587, 0.114]) 

我怎样才能做到这一点? 提前谢谢!你知道吗


Tags: np数字数组resultdotcvcoloramp
1条回答
网友
1楼 · 发布于 2024-03-29 07:17:56

现在还不清楚你在问什么,但这里有一些选项可以让你开始:

手动最小最大变换

您可以使用min-max转换,使它们都在[0,1]的范围内,然后乘以255。然后,所有值都在0到255之间,与原始数组成比例(最小值为0,最大值为255)。你知道吗

(arr-np.min(arr))/(np.max(arr)-np.min(arr))*255

这会给你:

array([[[ 33.25036151, 204.95570265,  31.63134374],
        [ 44.98801296,  61.73433955, 251.40292398],
        [  0.31901231,   0.        ,   2.66884725]],

       [[213.36859086,   7.97712711,  57.10866111],
        [ 50.88124979,  28.211362  ,  77.03237453],
        [ 11.12661552,   6.97460364,  62.52914112]],

       [[141.35580825,  10.20414837,  49.44266198],
        [ 37.83388908,  25.34995505,  71.00722671],
        [ 44.95101723, 255.        , 162.13102979]]])

cv2选项:

在标记这个opencv时,还可以使用它们的^{} function

import cv2

cv2.normalize(arr,0,255)

还提供一个介于0和255之间的数组:

array([[[ 16,  96,  15],
        [ 21,  29, 117],
        [  0,   0,   1]],

       [[100,   4,  27],
        [ 24,  13,  36],
        [  5,   3,  29]],

       [[ 66,   5,  23],
        [ 18,  12,  33],
        [ 21, 119,  76]]], dtype=int32)

注意:您可以使用cv2获得最小-最大变换,如我在上面手动显示的:

cv2.normalize(arr,0,255, norm_type=cv2.NORM_MINMAX, dtype=5)

array([[[ 33.250362 , 204.9557   ,  31.631344 ],
        [ 44.988014 ,  61.73434  , 251.40292  ],
        [  0.3190123,   0.       ,   2.6688473]],

       [[213.36859  ,   7.977127 ,  57.10866  ],
        [ 50.88125  ,  28.211363 ,  77.03237  ],
        [ 11.126616 ,   6.9746037,  62.52914  ]],

       [[141.3558   ,  10.204148 ,  49.44266  ],
        [ 37.83389  ,  25.349955 ,  71.007225 ],
        [ 44.951015 , 255.       , 162.13103  ]]], dtype=float32)

相关问题 更多 >