将功能应用于蒙版区域
Apply function to masked region
我有这样一张图片:
蒙版和原图我都有。我只想计算鸭子区域的色温。
现在,我正在遍历下图中的每一行和每一列,并获取其值不为零的像素。但我认为这不是正确的做法。有什么建议吗?
我所做的是:
xyzImg = cv2.cvtColor(resImage, cv2.COLOR_BGR2XYZ)
x,y,z = cv2.split(xyzImg)
xList=[]
yList=[]
zList=[]
rows=x.shape[0]
cols=x.shape[1]
for i in range(rows):
for j in range(cols):
if (x[i][j]!=0) and (y[i][j]!=0) and (z[i][j]!=0):
xList.append(x[i][j])
yList.append(y[i][j])
zList.append(z[i][j])
xAvg = np.mean(xList)
yAvg = np.mean(yList)
zAvg = np.mean(zList)
xs = xAvg / (xAvg + yAvg + zAvg)
ys = yAvg / (xAvg + yAvg + zAvg)
xyChrome = np.array([xs,ys])
但这很慢,我认为这是不对的...
最简单的方法是使用 cv2.mean()
函数。
它有两个参数 src
(有 1 到 4 个通道)和 mask
和 returns 一个具有各个通道平均值的向量。
我有这样一张图片:
蒙版和原图我都有。我只想计算鸭子区域的色温。
现在,我正在遍历下图中的每一行和每一列,并获取其值不为零的像素。但我认为这不是正确的做法。有什么建议吗?
我所做的是:
xyzImg = cv2.cvtColor(resImage, cv2.COLOR_BGR2XYZ)
x,y,z = cv2.split(xyzImg)
xList=[]
yList=[]
zList=[]
rows=x.shape[0]
cols=x.shape[1]
for i in range(rows):
for j in range(cols):
if (x[i][j]!=0) and (y[i][j]!=0) and (z[i][j]!=0):
xList.append(x[i][j])
yList.append(y[i][j])
zList.append(z[i][j])
xAvg = np.mean(xList)
yAvg = np.mean(yList)
zAvg = np.mean(zList)
xs = xAvg / (xAvg + yAvg + zAvg)
ys = yAvg / (xAvg + yAvg + zAvg)
xyChrome = np.array([xs,ys])
但这很慢,我认为这是不对的...
最简单的方法是使用 cv2.mean()
函数。
它有两个参数 src
(有 1 到 4 个通道)和 mask
和 returns 一个具有各个通道平均值的向量。