为了简化我的问题,我将使用像素作为模板。
计算像素的最高值,中值和最低值的最快方法是什么?例如:
unsigned char pixel[] = {128, 255, 64};
unsigned char highest, median, lowest;
get_pixel_values_priority(pixel, &highest, &median, &lowest);
printf("Highest %u\nMedian %u\nLowest %u", highest, median, lowest);
结果应为:
Highest 255
Median 128
Lowest 64
由于您是使用C ++标记的,因此我将使用std::vector
与std::sort()
算法混合的对象,以使查找这些统计信息变得容易。这是一个简单的例子。
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<float> numbers = { 1, 4, 3, 2 };
std::sort(numbers.begin(), numbers.end());
// numbers = { 1, 2, 3, 4 }
float min = numbers.front();
float max = numbers.back();
float median;
if (numbers.size() % 2) { // odd number of elements
median = numbers[numbers.size() / 2];
}
else { // even number of elements
median = (numbers[numbers.size() / 2] + numbers[numbers.size() / 2 - 1]) / 2;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句