C#中用getpixel方法获得像素的XY

C#中用getpixel方法获得像素的XY,第1张

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如何获取一点的像素等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9604189.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存