Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python增加图像中特定像素的亮度_Python_Image_Numpy_Opencv - Fatal编程技术网

使用python增加图像中特定像素的亮度

使用python增加图像中特定像素的亮度,python,image,numpy,opencv,Python,Image,Numpy,Opencv,我想增加下图中紫色的亮度/生动度: 这是调色板 以下是我尝试过的:但这会增加整个图像的亮度: def increase_brightness(img, value=20): hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV) h, s, v = cv2.split(hsv) lim = 255 - value v[v > lim] = 255 v[v <= lim] += value final

我想增加下图中紫色的亮度/生动度:

这是调色板

以下是我尝试过的:但这会增加整个图像的亮度:

def increase_brightness(img, value=20):
    hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
    h, s, v = cv2.split(hsv)

    lim = 255 - value
    v[v > lim] = 255
    v[v <= lim] += value

    final_hsv = cv2.merge((h, s, v))
    img = cv2.cvtColor(final_hsv, cv2.COLOR_HSV2BGR)
    plt.imsave('img_new.png', img)

    return img
def增加亮度(img,值=20):
hsv=cv2.CVT颜色(img,cv2.COLOR_RGB2HSV)
h、 s,v=cv2.分流(hsv)
lim=255-值
v[v>lim]=255

v[v注意,您已将图像从RGB转换为HSV,需要将其从BGR转换为HSV

如果您只想增加紫色的亮度,请对紫色使用cv2.inRange()创建遮罩。然后使用当前方法修改输入图像的所有位置。然后使用遮罩组合输入图像和修改图像,以便仅显示与遮罩中的白色对应的紫色的增强效果

这是在Python/OpenCV中实现的

输入:

导入cv2
将numpy作为np导入
#读取图像
img=cv2.imread('purple.png')
#设定值
值=20
#将图像转换为hsv颜色空间
hsv=cv2.CVT颜色(img,cv2.COLOR\U BGR2HSV)
h、 s,v=cv2.分流(hsv)
#创建紫色的遮罩和它的反转遮罩
低_范围=(80160,50)
高_范围=(150230120)
遮罩=cv2.inRange(hsv、低量程、高量程)
inv_掩码=cv2。按位_非(掩码)
mask=cv2.merge([掩码,掩码,掩码])
库存掩码=cv2.合并([库存掩码,库存掩码,库存掩码])
#增强hsv图像的价值通道
lim=255-值
v[v>lim]=255

v[v注意,您已将图像从RGB转换为HSV,需要将其从BGR转换为HSV

如果您只想增加紫色的亮度,请对紫色使用cv2.inRange()创建遮罩。然后使用当前方法修改输入图像的所有位置。然后使用遮罩组合输入图像和修改图像,以便仅显示与遮罩中的白色对应的紫色的增强效果

这是在Python/OpenCV中实现的

输入:

导入cv2
将numpy作为np导入
#读取图像
img=cv2.imread('purple.png')
#设定值
值=20
#将图像转换为hsv颜色空间
hsv=cv2.CVT颜色(img,cv2.COLOR\U BGR2HSV)
h、 s,v=cv2.分流(hsv)
#创建紫色的遮罩和它的反转遮罩
低_范围=(80160,50)
高_范围=(150230120)
遮罩=cv2.inRange(hsv、低量程、高量程)
inv_掩码=cv2。按位_非(掩码)
mask=cv2.merge([掩码,掩码,掩码])
库存掩码=cv2.合并([库存掩码,库存掩码,库存掩码])
#增强hsv图像的价值通道
lim=255-值
v[v>lim]=255

v[v您可以为图像添加对比度。不可能重复使用代码,但创建一个考虑对比度的代码:

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

image = cv.imread('image.png')

def increase_brightness(image, alpha, beta):
    # Simple contrast control(alpha)
    # Simple brightness control(betha)

    new_image = np.zeros(image.shape, image.dtype)

    for y in range(image.shape[0]):
        for x in range(image.shape[1]):
            for c in range(image.shape[2]):
                new_image[y,x,c] = np.clip(alpha*image[y,x,c] + beta, 0, 255)

    plt.imsave('img_new.png', new_image)
    return new_image
我测试了以下案例:

increase_brightness(image, 1.0, 4)
旧图像:

新图像:


我的解决方案基于此链接:

您可以为图像添加对比度。不可能重复使用代码,但创建一个考虑对比度的代码:

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

image = cv.imread('image.png')

def increase_brightness(image, alpha, beta):
    # Simple contrast control(alpha)
    # Simple brightness control(betha)

    new_image = np.zeros(image.shape, image.dtype)

    for y in range(image.shape[0]):
        for x in range(image.shape[1]):
            for c in range(image.shape[2]):
                new_image[y,x,c] = np.clip(alpha*image[y,x,c] + beta, 0, 255)

    plt.imsave('img_new.png', new_image)
    return new_image
我测试了以下案例:

increase_brightness(image, 1.0, 4)
旧图像:

新图像:


我的解决方案基于此链接:

您可以使用
np.where()
使您的代码读得更好。我无法确定您到底出了什么问题。一个带有您想要的输出示例的小样本数组将非常有助于查看,您可以使用
np.where()使您的代码读得更好
。我不知道你到底出了什么问题。一个小样本数组和一个你想要的输出示例非常有帮助。这正是我的问题,如何创建一个遮罩,只修改输入中与紫色对应的像素的亮度?我当前的答案向你展示了如何操作。起初我误读了e问题。所以我编辑了我的答案。这正是我的问题,如何创建一个遮罩,只修改输入中与紫色对应的像素的亮度?我当前的答案向您展示了如何修改。我一开始误解了这个问题。所以我编辑了我的答案。这并没有回答他的问题。他不想增加对比度或亮度re,仅适用于紫色像素。此外,您可以使用cv2.normalize在一行中执行您尝试执行的操作。请参阅,这并不能回答他的问题。他不想在任何地方增加对比度或亮度,仅适用于紫色像素。此外,您可以使用cv2.normalize在一行中执行您尝试执行的操作。请参阅