结构像素颜色值
Struct Pixel color value
我定义了一个结构
struct Pixel { uint8_t r, g, b; };
我有一个功能
void setPixel(int x, int y, const Pixel& color);
我必须输入什么颜色值才能setPixel()
函数使其正常工作?我不知道我应该如何定义它。
我在这里错过了什么?
查看为
要调用的函数提供的原型。
void setPixel(int x, int y, const Pixel& color);
观察:
- 它想要一个参数用于
x
,一个整数 - 它想要一个参数用于
y
,一个整数 - 它想要一个
color
参数,一个Pixel
,
它恰好是一个参考参数,但这并不立即相关
因此,首先,任何具有三个以上参数的调用都无法正常工作。
其次,您需要给出三个正确类型的参数,前两个为 int 类型,可以是 r 值。您的x
和y
可能没问题,如果它们是 int,如
int x = 5;
int y = 5;
但是,这可能会有点令人困惑,在要调用的函数内部和外部使用相同的名称。所以我推荐
int outsideX = 5;
int outsideY = 5;
第三个参数作为参考参数,需要一个类型为 Pixel
的实际(常量)变量。您需要设置一个。
Pixel outsideColor;
outsideColor.r = 255;
outsideColor.g = 0;
outsideColor.b = 255;
// this will be bright magenta
完成这些准备工作后,您可以将函数调用为
setPixel(outsideX, outsideY, outsideColor);
显然,没有函数将颜色作为三个不同的参数。
相反,您必须使用将结构作为参数的函数。这很容易,就像在
setPixel(some_x, some_y, { some_r, some_g, some_b });
其中定义变量并将其初始化为某些值或直接值。
你只需要正确构造Pixel,例如,你可以使用聚合初始化或手动构造:
struct Pixel { uint8_t r, g, b; };
void setPixel(int x, int y, const Pixel& color) {
std::cout << "Setting " << x << " " << y << " to: " << (unsigned)color.r << " " << (unsigned)color.g << " " << (unsigned)color.b << std::endl;
}
int main() {
// Using aggregate init
setPixel(1, 1, { 255, 255, 255 });
// Manually
Pixel pix;
pix.r = 255;
pix.g = 255;
pix.b = 255;
setPixel(1, 1, pix);
}
相关文章:
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- OpenCV 像素访问点与 at() - 不同的值
- 计算另一个图像像素满足条件的像素值的平均值
- 如何返回定义良好的内存部分?例如来自图像数据的像素的颜色值
- 访问和更改基于另一个图像的像素颜色-opencv c++
- 可视化 如何获取图像中像素的颜色(以C++ (sfml) 为单位)
- 在OpenCV中设置像素值(奇怪的结果)
- OpenCV 访问像素的颜色值
- 无法获取窗口 C++ 的像素颜色
- 如何使用 openCV 更改图像每个像素的颜色
- 为什么更改视频格式会更改其像素值?
- 我想知道像素/片段的原始模板值.零还是一个?如果可能的话,以获取哪些特定操作会修改模板值
- 如何插值像素坐标而不是像素值?需要它来为相机生成校正重映射
- 具有特定颜色的像素不在 SFML 中放置的位置
- 结构像素颜色值
- 根据OPENCV中一个通道中的一个值,查找最大颜色像素
- openCV中的颜色检测-像素检查问题
- C++图像库 - 找到一种颜色的像素并使它们变白,其他一切都变黑
- 从SDL_Surface读取像素并转换为颜色值