是否可以在Rasbmc(Raspberry Pi)中用C检索屏幕上像素的颜色?
我的计划是使用这个和WiringPi一起根据屏幕上某些点的平均颜色来控制RGB led。
我已经研究了各种选项,包括使用Python。有一个网站提供了一些似乎有用的例子,但我还没有让它们发挥作用。我试过Python和C Examples。
我使用的代码如下:
#include <X11/Xlib.h>
void get_pixel_color (Display *d, int x, int y, XColor *color)
{
XImage *image;
image = XGetImage (d, RootWindow (d, DefaultScreen (d)), x, y, 1, 1, AllPlanes, XYPixmap);
color->pixel = XGetPixel (image, 0, 0);
XFree (image);
XQueryColor (d, DefaultColormap(d, DefaultScreen (d)), color);
}
XColor c;
get_pixel_color(display, 30, 40, &c);
printf ("%d %d %d\n", c.red, c.green, c.blue);
但是我似乎无法让它工作。以下是我在使用C示例时遇到的错误:
我不明白的是我得到的第一个错误(其他的似乎与printf函数的格式有关,所以我想可以忽略它们?)。数字常数是什么意思,它是指get_pixel_color函数的x和y分量吗?我觉得很奇怪,但我知道我一定是误会了!
最佳答案
获取像素颜色的调用不在函数中。
你似乎完全没有一个主要功能,除非我完全漏掉了什么。您正在调用程序块之外的函数。在C语言中,这种格式是为原型设计保留的。编译器需要一个原型(原型是在实际描述函数的实现之前,大致描述一个函数,“接受这些参数,返回这个参数”)。如果你不熟悉这个术语),当你给它提供一个函数时。
至少你在看:
int main(){
XColor c;
get_pixel_color(display, 30, 40, &c);
printf ("%d %d %d\n", c.red, c.green, c.blue);
return 0;
}
试一试,看看是否有效。
如果这是一个已经有main的大型程序的一部分,只需调用不同的函数并从main调用它。
关于python - 如何获得屏幕的像素颜色? (树莓派),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19507317/