zoukankan      html  css  js  c++  java
  • 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也是两百多的

  • 相关阅读:
    如何手动编译运行带包 java 程序
    java计算时间差 Java问题通用解决代码
    Java除法结果带小数、进一法的实现 Java问题通用解决代码
    java中按字节获得字符串长度的两种方法 Java问题通用解决代码
    java精确除法计算,四舍五入 Java问题通用解决代码
    java 根据生日计算年龄 Java问题通用解决代码
    java统计中英文字数 Java问题通用解决代码
    java 实现新浪微博内容计数器 Java问题通用解决代码
    java代理ip有效检测
    java 实现统计某段文字在内容中出现的次数
  • 原文地址:https://www.cnblogs.com/mrfri/p/8651957.html
Copyright © 2011-2022 走看看