var*_*lla 4 python rgb image-processing
我正在进行图像处理,我想知道这段代码是否会将彩色图像分成不同的通道,并给我平均值.因为当我尝试给我的图像我正在阅读时,它给了我蓝色,绿色,红色的值,以及平均值.当我尝试将其附加到列表中并尝试打印时,该列表仅包含零.
这是我的代码:
b, g, r = cv2.split(re_img1)
ttl = re_img1.size
B = sum(b) / ttl
G = sum(g) / ttl
R = sum(r) / ttl
B_mean1.append(B)
G_mean1.append(G)
R_mean1.append(R)
Run Code Online (Sandbox Code Playgroud)
re_img1是调整大小的图像(即256x256).图像可以是任何东西.我在2个不同的功能中使用相同的代码,我面临同样的问题.
欢迎任何建议!提前致谢!
如果我理解你,你正试图计算每个RGB通道的平均值.您的代码中有2个问题:
你的代码中的b,g和r实际上是numpy.ndarray类型,所以你应该使用适当的方法来操作它们,即 ndarray.sum.将总和设为浮点数,否则将丢失小数,因为2个整数的商将给出一个int.
import cv2
import numpy as np
re_img1 = cv2.imread('re_img1.png')
b, g, r = cv2.split(re_img1)
ttl = re_img1.size / 3 #divide by 3 to get the number of image PIXELS
"""b, g, and r are actually numpy.ndarray types,
so you need to use the appropriate method to sum
all array elements"""
B = float(np.sum(b)) / ttl #convert to float, as B, G, and R will otherwise be int
G = float(np.sum(g)) / ttl
R = float(np.sum(r)) / ttl
B_mean1 = list()
G_mean1 = list()
R_mean1 = list()
B_mean1.append(B)
G_mean1.append(G)
R_mean1.append(R)
Run Code Online (Sandbox Code Playgroud)希望这对你有用.干杯!
| 归档时间: |
|
| 查看次数: |
16058 次 |
| 最近记录: |