如何用Python在RGB系统(分离skypart)中使用mean+Std二值图像

2024-06-06 10:49:39 发布

您现在位置:Python中文网/ 问答频道 /正文

sky.jpg

sky_mask.jpg

sky1.jpg

sky2.jpg

如何使用我的sky.jpg的平均值和标准偏差来分离skypart(sky1.jpg和sky2.jpg);sky_mask.jpg

像图像二值化(天空部分为白色,其余部分为黑色)

这是我的密码:

import cv2
import numpy as np
import matplotlib.pyplot as plt

def rgb2gray(rgb):
    return np.dot(rgb[...,:3], [0.299, 0.587, 0.144])


img = cv2.imread("sky.jpg")
mask_i = cv2.imread("sky_mask.jpg")


sky1 = cv2.imread("sky_1.jpg", 0)

sky2 = cv2.imread("sky_2.jpg")

mean_RGB, std_RGB = cv2.meanStdDev(img, mask_i)

ret,thresh2_RGB = cv2.threshold(sky2,152,255,cv2.THRESH_BINARY)
t2 = rgb2gray(thresh2_RGB)

print("RGB_mean", mean_RGB)
print("RGB_Std", std_RGB)

plt.imshow(t2, cmap="gray")

cv2.waitKey(0)
cv2.destroyAllWindows();

RGB平均值为116/102/84

RGB标准为70/57/62

Result

我希望天空的一部分是白色的,其余部分是黑色的

我是否应该先将RGB转换为灰度,然后计算平均值和标准差

idk我应该使用什么阈值(所以我只需键入152)


Tags: importasmaskrgbmeancv2天空平均值