publicstaticBitmap RGB2Gray(Bitmap srcBitmap)
{
Color srcColor;
int wide = srcBitmapWidth;
int height = srcBitmapHeight;
for (int y = 0; y < height; y++)
for (int x = 0; x < wide; x++)
{
//获取像素的RGB颜色值
srcColor = srcBitmapGetPixel(x, y);
byte temp = (byte)(srcColorR 299 + srcColorG 587 + srcColorB 114);
//设置像素的RGB颜色值
srcBitmapSetPixel(x, y, ColorFromArgb(temp, temp, temp));
}
return srcBitmap ;
}
比方说取一个JLabel里面的Text所占的宽和高,用如下方法:
主要用到FontMetrics类,
import javaawtFontMetrics;
import javaxswingJLabel;
JLabel label = new JLabel( "test Label ");
FontMetrics metrics = labelgetFontMetrics(labelgetFont());
int textH = metricsgetHeight(); //字符串的高, 只和字体有关
int textW = metricsstringWidth(labelgetText()); //字符串的宽
一个一个像素的读写太慢了吧,
opengl只支持一堆像素的读写。
void
glReadPixels();
glDrawPixels();
当然你用他们来读写一个像素也可以只不过有点大材小用
void
glReadPixels(GLint
x,GLint
y,GLsizesi
width,GLsizei
height,
GLenum
format,GLenum
type,GLvoid
pixel);
函数参数(x,
y)定义图像区域左下角点的坐标,width和height分别是图像的高度和宽度,pixel是一个指针,指向存储图像数据的数组。参数format指出所读象素数据元素的格式(索引值或R、G、B、A值,如下面表所示),而参数type指出每个元素的数据类型(也见下面表)。
写入象素数据:
void
glDrawPixels(GLsizesi
width,GLsizei
height,GLenum
format,
GLenum
type,GLvoid
pixel);
函数参数format和type与glReadPixels()有相同的意义,pixel指向的数组包含所要画的象素数据。注意,调用这个函数前必须先设置当前光栅位置,若当前光栅位置无效,则给出该函数时不画任何图形,并且当前光栅位置仍然保持无效。
+++++++++++像素格式表++++++++++++++++++++++
GL_INDEX
单个颜色索引
GL_RGB
先是红色分量,再是绿色分量,然后是蓝色分量
GL_RED
单个红色分量
GL_GREEN
单个绿色分量
GL_BLUE
单个蓝色分量
GL_ALPHA
单个Alpha值
GL_LUMINANCE_ALPHA
先是亮度分量,然后是Alpha值
GL_STENCIL_INDEX
单个的模板索引
GL_DEPTH_COMPONENT
单个深度分量
++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++
数据类型+++++++++++++++++++
GL_UNSIGNED_BYTE
无符号的8位整数
GL_BYTE
8位整数
GL_BITMAP
无符号的8位整数数组中的单个数位
GL_UNSIGNED_SHORT
无符号的16位整数
GL_SHORT
16位整数
GL_UNSIGNED_INT
无符号的32位整数
GL_INT
32位整数
GL_FLOAT
单精度浮点数
+++++++++++++++++++++++++++++++++++++++
图像的每个元素按上面表给出的数据类型存储。若元素表示连续的值,如红、绿、蓝或亮度分量,每个值都按比例放缩使之适合于可用的位数。例如,红色分量是00到10之
间的浮点值。若它需要放到无符号单字节整数中,也仅有8位精度保存下来,其他无符号整数类型同理。对于有符号的数据类型还要少一位,例如颜色索引存到有符号的8位整数中,它的第一位被0xfe屏蔽掉了(即这个掩码包含7个1)。若类型是GL_FLOAT,索引值简单地转化成单精度浮点值,例如索引17转化成170,同理。
临时写了一个供参考:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 10 Transitional//EN" ">
题主是否想询问“matlab如何获取mesh像素对象”?matlab获取mesh像素对象的步骤:
1、首先,使用mesh函数创建一个三维网格对象。
2、其次,使用getframe函数获取当前图窗中的像素数据,将其存储在一个结构体对象中。
3、最后,将获取到的像素数据保存为PNG格式的图像文件。
你的问题可以这样的解决:
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Print "该点的象素RGB值是:"; GetPixel(Picture1hdc, x, y)
End Sub
getpixel函数的用法:
Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
说明
在指定的设备场景中取得一个像素的RGB值
返回值
指定点的RGB颜色。如指定的点位于设备场景的剪切区之外,则返回CLR_INVALID
给你的一点建议:学习vb一定要学习vb的api,非常的重要!!
像素点的坐标精度,跟你图像的分辨率和你提取角点的算法有关。
相机标定过程中,角点的坐标都是自动获取的。
感觉你把问题描述的不清楚啊。没有读懂你的意思!
图像大了就可以获取像素点?图像小了就获取不到像素点?
实际像素点?用这样的表述你是想表达啥?
两个角点之间占多少个像素?
有像素坐标为什么计算不出来像素个数呢?
以上就是关于C#中用getpixel方法获得像素的XY全部的内容,包括:C#中用getpixel方法获得像素的XY、JAVA中怎么获取一个字符串占的像素有什么方法、opengl如何获取一点的像素等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)