opencv +python 提取roi目標區域全部像素的值 得出上下限 均勻值


cv2.imread后返回的值是一個矩陣,而我需要全部像素的值,不需要矩陣排布

所以:

利用

h, w, _ = img3.shape

得到區域的長寬,也就是像素的行數和列數

再用 for 循環,逐個打印

for a in range(h):
    for b in range(w):
        print(img3[a,b])
        jihe.append(list(img3[a,b]))
        num +=1

就可以得到整齊的一字排開的像素值

[ 98 125 255]
[ 97 124 255]
[ 96 123 254]
[ 94 121 252]
[ 93 120 251]
[ 92 119 250]
[ 91 118 249]
[ 90 117 248]
[ 98 125 255]
[ 97 124 255]
[ 95 122 253]
[ 93 120 251]
[ 92 119 250]
[ 91 118 249]
[ 89 116 247]
[ 87 114 245]
[ 97 124 255]
[ 96 123 254]
[ 94 121 252]
[ 94 121 252]
[ 93 120 251]
[ 92 119 250]
[ 90 117 248]
[ 88 115 246]
[ 93 120 251]
[ 92 119 250]
[ 92 119 250]
[ 93 120 251]
[ 94 121 252]
[ 93 120 251]
[ 91 118 249]
[ 90 117 248]
[ 93 120 251]
[ 93 120 251]
[ 95 122 253]
[ 96 123 254]
[ 97 124 255]
[ 95 122 253]
[ 95 122 253]
[ 95 122 253]
[ 95 122 255]
[ 94 121 254]
[ 95 122 255]
[ 97 124 255]
[ 97 124 255]
[ 96 123 255]
[ 95 122 255]
[ 95 122 255]
[ 92 119 252]
[ 90 117 250]
[ 89 116 249]
[ 92 119 252]
[ 93 120 253]
[ 92 119 252]
[ 90 117 250]
[ 90 117 250]
[ 92 119 252]
[ 88 115 248]
[ 88 115 248]
[ 91 118 251]
[ 94 121 254]
[ 93 120 253]
[ 91 118 251]
[ 90 117 250]
[ 92 119 252]
[ 90 117 250]
[ 89 116 249]
[ 91 118 251]
[ 92 119 252]
[ 92 119 252]
[ 92 119 252]
[ 93 120 253]
[ 89 116 249]
[ 89 116 249]
[ 90 117 250]
[ 93 120 253]
[ 94 121 254]
[ 93 120 253]
[ 93 120 253]
[ 93 120 253]
[ 84 110 246]
[ 86 112 248]
[ 88 114 250]
[ 90 116 252]
[ 90 116 252]
[ 90 116 252]
[ 90 116 252]
[ 91 117 253]
[ 83 109 245]
[ 85 111 247]
[ 87 113 249]
[ 86 112 248]
[ 85 111 247]
[ 85 111 247]
[ 87 113 249]
[ 89 115 251]
[ 86 112 248]
[ 87 113 249]
[ 87 113 249]
[ 86 112 248]
[ 83 109 245]
[ 83 109 245]
[ 86 112 248]
[ 88 114 250]
[ 85 111 247]

再求RGB均值

sumx = sumy = sumz = 0
for i in range(num):
[x, y, z] = jihe[i]
sumx = sumx + x
sumy = sumy + y
sumz = sumz + z

r=int(sumx/num)
g=int(sumy/num)
b=int(sumz/num)
print(r, g, b)
print(num)
print(jihe)
print('集合長度%d' % (len(jihe)))

colors_change = np.uint8([[[b,g,r]]])
hsv_change = cv2.cvtColor(colors_change,cv2.COLOR_BGR2HSV)
print(hsv_change)

得出HSV平均值

這里的HSV是opencv下的,與別處不同

For HSV, Hue range is [0,179], Saturation range is [0,255] and Value range is [0,255]. Different softwares use different scales. So if you are comparing OpenCV values with them, you need to normalize these ranges.

H:0-179

S: 0-255

V:0-255

但其他軟件經常見H也是兩百多的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM