面试题答案
一键面试设计思路
- 首先遍历二维数组中的每个像素点。
- 对于每个像素点的红色分量,由于要增强50%,可以通过位运算先将红色分量右移1位(相当于除以2),然后再加上原红色分量值,即实现增强50%。
- 在每次操作后,检查红色分量值是否超过255,如果超过则将其设置为255,以处理边界情况。
代码实现
#include <iostream>
#include <vector>
// 图像颜色调整函数
void adjustImageColor(std::vector<std::vector<std::vector<int>>> &image) {
for (size_t i = 0; i < image.size(); ++i) {
for (size_t j = 0; j < image[i].size(); ++j) {
int &red = image[i][j][0];
red += red >> 1;
if (red > 255) {
red = 255;
}
}
}
}
你可以使用以下方式调用这个函数:
int main() {
// 示例图像数据,一个2x2的图像
std::vector<std::vector<std::vector<int>>> image = {
{ {100, 150, 200}, {120, 130, 140} },
{ {200, 210, 220}, {230, 240, 250} }
};
adjustImageColor(image);
// 输出调整后的图像数据
for (const auto &row : image) {
for (const auto &pixel : row) {
std::cout << "(" << pixel[0] << ", " << pixel[1] << ", " << pixel[2] << ") ";
}
std::cout << std::endl;
}
return 0;
}