如何通过鼠标单击获取像素的 rgb 颜色值
Posted
技术标签:
【中文标题】如何通过鼠标单击获取像素的 rgb 颜色值【英文标题】:how to pick up rgb color value of a pixel from a mouse click 【发布时间】:2011-08-19 13:17:25 【问题描述】:这可能是一个非常幼稚的问题,但我有点卡住了。 我正在编写我的第一个 opengl 程序,我想获取一个像素的 R 值,即我通过鼠标单击获得的点。 我对如何使用 glReadPixels 函数一无所知。
void myMouseFunc( int button, int state, int x, int y )
if ( button==GLUT_LEFT_BUTTON && state==GLUT_DOWN )
glReadPixels(x,y,0.1,0.1,GL_RED,GL_INT, pixel);
glutPostRedisplay();
【问题讨论】:
【参考方案1】:文档很清楚:
http://www.opengl.org/sdk/docs/man/xhtml/glReadPixels.xml
GLubyte pixel;
glReadPixels(x, windowHeight - y - 1, 1, 1, GL_RED, GL_UNSIGNED_BYTE, &pixel);
【讨论】:
我正在使用 GL_INT,并且对于使用 glColor3f() 赋予不同颜色的像素,我得到了相同的 R 值。 您是否做出了 Andreas 建议的更改?请特别注意,宽度和高度应以像素为单位(而不是像您的问题中那样为 0.1),并且 y 坐标是倒置的(从底部开始)。 @Nitin 请记住,如果使用GL_INT
,颜色值的 [0,1] 范围将转换为 32 位整数范围(与您可能期望的 [0,255] 形成对比) 以上是关于如何通过鼠标单击获取像素的 rgb 颜色值的主要内容,如果未能解决你的问题,请参考以下文章
Java Robot类鼠标移动到特定像素的位置(鼠标单击一种颜色)
通过鼠标单击获取 matplotlib 绘图图 python 的坐标