简单的自动曝光

题目描述
一个图像有n个像素点,存储在一个长度为n的数组img里,每个像素点的取值范围[0,255]的正整数。

请你给图像每个像素点值加上一个整数k(可以是负数),得到新图newImg,使得新图newImg的所有像素平均值最接近中位值128。

请输出这个整数k。

输入描述
n个整数,中间用空格分开

输出描述
一个整数k

备注
1 <= n <= 100
如有多个整数k都满足,输出小的那个k;
新图的像素值会自动截取到[0,255]范围。当新像素值<0,其值会更改为0;当新像素值>255,其值会更改为255;
例如newImg=”-1 -2 256″,会自动更改为”0 0 255″

用例1
输入
0 0 0 0
输出
128
说明
四个像素值都为0

用例2
输入
129 130 129 130
输出
-2
说明
-1的均值128.5,-2的均值为127.5,输出较小的数-2

#最开始输入的像素点肯定在0-255之间,想要加上整数K后最接近128
#那么我们k的取值为-127~128之间,直接暴力
old_images = list(map(int,input().split()))
length = len(old_images)
minK = 255 #最小的K
mindiff=  255  #最小的差值
for k in range(-127,129):
    new_sum_image = 0
    for image in old_images:
        #当新像素值<0,其值会更改为0;当新像素值>255,其值会更改为255;
        new_sum_image+=min(max(k+image,0),255)
    avg = new_sum_image/length
    diff = abs(avg-128)
    if diff<mindiff:
        mindiff = diff
        minK = k
print(minK)
自动曝光python可以使用Python的OpenCV库实现。OpenCV库是一个广泛使用的计算机视觉库,提供了很多有用的功能,包括图像处理和计算机视觉任务的实现。 首先,需要读取图片数据并将其转换为灰度图像。使用OpenCV库的cv2.imread()函数读取图片数据,并使用cv2.cvtColor()函数将其转换为灰度图像。 接下来,需要计算灰度直方图。使用cv2.calcHist()函数计算灰度直方图。然后,可以使用matplotlib库把直方图绘制出来。 然后,需要找到直方图中的最大值和最小值。使用numpy库的np.argmax()和np.argmin()函数找到最大值和最小值。 最后,根据最大值和最小值自动调整曝光。可以使用cv2.addWeighted()函数进行加权平均和cv2.imshow()函数显示处理后的图像。 下面是一个简单自动曝光python代码: ```python import cv2 import numpy as np import matplotlib.pyplot as plt # 读取图片并转换为灰度图像 img = cv2.imread("image.jpg") gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 计算灰度直方图 hist = cv2.calcHist([gray_img], [0], None, [256], [0, 256]) plt.plot(hist) plt.show() # 找到直方图中的最大值和最小值 min_value = np.argmin(hist) max_value = np.argmax(hist) # 根据最大值和最小值自动调整曝光 alpha = 255 / (max_value - min_value) beta = - min_value * alpha auto_img = cv2.convertScaleAbs(img, alpha=alpha, beta=beta) # 显示图片 cv2.imshow("Auto Exposure", auto_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 以上是一个简单自动曝光python代码,可以根据直方图中的最大值和最小值自动调整曝光。此代码可以用于自动调整曝光的照片或视频。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值