高亮度区域检测(二维通道转三通道)opencv

该代码实现了一个功能,将输入图像中亮度超过128的像素点用红色标出。首先,它将灰度图像转换为具有三个通道的RGB图像,然后将图像转为HSV色彩空间,提取亮度通道。当亮度超过指定阈值时,这些像素在输出图像中被设置为红色。最后,统计并返回红色像素的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将一张图中亮度超过128的区域变成红色输出


    def reshape_gray_to_color( img):
    """一个img的shape等于img.shape (319, 460) ,
    将该img的shape变成img.shape (319, 460, 3)"""
        # 创建新的形状(在最后面加入一个“3”以表示三个颜色通道)
        new_shape = img.shape + (3,)

        # 按照新形状创建一个空白数组
        img_reshaped = np.zeros(new_shape, dtype=img.dtype)

        # 将原始图像复制到新数组中对应的位置
        img_reshaped[:, :, 0] = img
        img_reshaped[:, :, 1] = img
        img_reshaped[:, :, 2] = img

        return img_reshaped

    def highlight_bright_pixels(img, brightness_threshold=128):
        """
        将输入图像中亮度大于等于给定值的像素点标记为红色。
        :param img: 输入图像
        :param brightness_threshold: 亮度值阈值,默认为 128。
        :return: 处理后的图像和标记像素数。
        """

        #img = self.reshape_gray_to_color(img) #

        # 将 RGB 图像转换为 HSV 图像
        hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

        # 提取亮度通道
        value_channel = hsv_img[:, :, 2]

        # 比较亮度值与阈值,返回 True/False 数组
        bright_pixels_mask = value_channel >= brightness_threshold

        # 在掩模下将亮度值大于阈值的区域设置成红色
        output_img = img.copy()
        output_img[bright_pixels_mask] = (0, 0, 255)  # 红色

        # 统计红色像素的数量
        num_red_pixels = np.count_nonzero(bright_pixels_mask)

        return output_img, num_red_pixels
#读取一张图片并显示
img = cv2.imread("keng/9_head_filter_old_mask.jpg")
cv2.imshow("image",img)
print("img.shape",img.shape)
img2,a = highlight_bright_pixels(img)
cv2.imshow("image2",img2)
print(a)
cv2.waitKey(0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员进化不脱发!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值