如何通过鼠标单击获取像素的 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 的坐标

如何改变图片大小?

PS切图篇

怎么在matlab中鼠标在坐标图上单击,记录下这一点的坐标啊

D3js:如何通过鼠标单击获取纬度/经度地理坐标?