首页 > 解决方案 > 获取关于距离的亮度级别(python)

问题描述

我需要根据 2 个输入获得 0 到 255(亮度范围)的值:距离和最大距离。If distance == 0输出应该是 255,If distance == maxDistance输出应该是 0。我该如何实现呢?我必须这样做大约 300000 次。

标签: python

解决方案


由于最大距离对应于最小亮度值,因此不能真正在它们之间使用交叉乘法,但可以在确定亮度值的范围后使用一点插值:

import numpy as np

max_distance = 10

brightness = np.arange(0, 256, 1)
distance = np.linspace(0, max_distance, len(brightness))

def getBrightness(actual_distance):
    
    i = 0
    distance_list = []
    brightness_range = []
    while i < len(distance):
        
        if distance[i] < actual_distance and distance[i + 1] > actual_distance:
            
            brightness_range.append(brightness[i])
            brightness_range.append(brightness[i + 1])
            
            distance_list.append(distance[i])
            distance_list.append(distance[i + 1])
            
        i += 1
    
    brightness_value = np.interp(actual_distance, distance_list, brightness_range)
    
    return brightness_value

print(getBrightness(3))

上面要求你指定一个最大距离来避免无限大的距离,所以在距离为 3 处(指定最大距离为 10 后),得到如下亮度输出:

76.5

推荐阅读