将3D数组转换为RGB值数组

时间:2018-08-08 02:55:25

标签: python numpy opencv

我有一个

这样的3D数组
[[[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]) 

我该如何实现? 提前致谢!

1 个答案:

答案 0 :(得分:-1)

不清楚您要问什么,但以下是一些入门指南:

手动最小-最大变换

您可以进行min-max转换,使它们都在<div v-for="n in Number(quantity)"> <button class="btn btn-primary" type="button" data-toggle="collapse" :data-target="'#collapse' +n" aria-expanded="false" aria- controls="collapseExample"> Add Toppings for <b>Pizza - {{n}}</b> </button> <div class="collapse.show" :id="'#collapse' +n"> <div class="card card-body"> <div class="row"> <div v-for="category in categories" class="col"> <table> <tr> <th> <h4><b>{{category.name}}</b></h4> </th> </tr> <tr v-for="name in category.topping_items"> <td> <input type="checkbox" v-model="selected[category.name]" :value="name.item + '-pizza-' + n " :id="name.id + n" /> <label :class="{bold_name: name.double_price}" :for="name.id + n">{{name.item}}</label> </td> </tr> </table> </div> </div> </div> </div> </div> <div class="align-content-center"> <button @click="closeForm">Add Selected Toppings</button> </div>的范围内,然后乘以255。然后,所有值都在0到255的范围内,与原始数组成比例(< em> ie 的最小值为0,最大值为255)。

[0,1]

这会给你:

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

cv2选项:

标记此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]]]) 时,还可以使用其normalize function

opencv

还为您提供0到255之间的数组:

import cv2

cv2.normalize(arr,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