C# 怎样获取灰度图的灰度值

C# 怎样获取灰度图的灰度值,第1张

void LoadRawFile(string name, int size)

{

FileStream fs = new FileStream(name, FileModeOpen, FileAccessRead, FileShareRead);

BinaryReader r = new BinaryReader(fs);

heightMap = rReadBytes(size);

rClose();

fsDispose();

}

LoadRawFile( "Terrainraw", MAP_SIZE MAP_SIZE);读取

灰度信息在 heightMap里

用for循环遍历所有需要处理的文件即可。

如果文件的命名有规律(例如0001bmp, 0002bmp, ),可以用sprintf函数直接生成文件名;

如果不满足上述条件,但文件在集中存放某个文件夹中,可以用dir获取文件列表;

如果文件没有规律,存放的位置也比较乱,那就直接手写一个cell数组,用以指定要处理的文件列表。

1

获取单个点的灰度值C:\Program

Files\National

Instruments\LabVIEW

2012\vilib\vision\Pixel

Manipulationllb\IMAQ

GetPixelValue,得到单个值0-255之间

2

获取整个图像的灰度值,但是你的图像应该是黑白图

C:\Program

Files\National

Instruments\LabVIEW

2012\vilib\vision\Basicsllb\IMAQ

ImageToArray,得到的是个二维数组。

Bitmap bmp = new Bitmap(100, 100);

using (Graphics g = GraphicsFromImage(bmp))

{

gFillEllipse(BrushesRed, new Rectangle(0, 0, 80, 80));

gFillRectangle(new SolidBrush(ColorFromArgb(128, ColorGreen)), new Rectangle(20, 20, 80, 80));

}

eGraphicsDrawImage(bmp, new Point(10, 10));

//简单的

ControlPaintDrawImageDisabled(eGraphics, bmp, 120, 10, ColorWhite);

//用颜色矩阵

SystemDrawingImagingImageAttributes attr = new SystemDrawingImagingImageAttributes();

float[][] colorMatrixElements = {

new float[] {33f, 33f, 33f, 0, 0}, // r = (r+g+b)/3

new float[] {33f, 33f, 33f, 0, 0}, // g = (r+g+b)/3

new float[] {33f, 33f, 33f, 0, 0}, // b = (r+g+b)/3

new float[] {0, 0, 0, 1, 0}, // alpha scaling factor of 1

new float[] {0, 0, 0, 0, 1}}; //

SystemDrawingImagingColorMatrix matrix = new SystemDrawingImagingColorMatrix(colorMatrixElements);

attrSetColorMatrix(matrix);

eGraphicsDrawImage(bmp, new Rectangle(10, 120, 100, 100), 0, 0, 100, 100, GraphicsUnitPixel, attr);

理,直接显示直方图,这样它统计的就是灰度值的出现次数。例如:

x=imread('D:\ebook\lenabmp');

x=rgb2gray(x);

imhist(x)

>> [conters,x1]=imhist(x);%%conters是各个灰度值出现的次数,x1是各个灰度值

>> [conters1,x11]=max(imhist(x))%%寻找最大值处

conters1 =

762

x11 =

153

conters1里面存的是各个灰度级的频数,x11里面是各个灰度级,如果把conters1和x11当做数组的话,那么x11数组中的序号1对应的灰度级就是0,2对应的灰度级就是1,所以只要找到conters1数组中你需要的百分之几最大值的序号,直接减1后就是其灰度值

conters=imhist(x);%%该形式直接返回各个灰度级的频数

>> [m,n]=find(conters==05762)%%找到你需要的频数,762为上面求的最大值

m =

107%%序号

n =

1

所以其05762处对应的灰度值就是107-1=106

opencv获取灰度图像的像素值的方法如下:

int main()

{    

   Mat img = imread("lenajpg");

   imshow("Lena Original", img);

   for (int row = 0; row < imgrows; row++)

   {

       for (int col = 0; col < imgcols; col++)

       {

           //主要是这里的代码

           if((imgdata + imgstep[0] row + imgstep[1] col + imgelemSize1() 2) > 128)

           {

               //[row, col]像素的第 1 通道地址被 解析(blue通道)

               (imgdata + imgstep[0] row + imgstep[1] col) = 255;

               //[row, col]像素的第 2 通道地址被 解析(green通道), 关于elemSize1函数的更多描述请见 Fn1 里所列的博文链接

               (imgdata + imgstep[0] row + imgstep[1] col + imgelemSize1()) = 255;

               //[row, col]像素的第 3 通道地址被 解析(red通道)

               (imgdata + imgstep[0] row + imgstep[1] col + imgelemSize1() 2) = 255;

           }

       }

   }

   imshow("Lena Modified", img);

   cvWaitKey();

   return 0;

}

输出:

以上就是关于C# 怎样获取灰度图的灰度值全部的内容,包括:C# 怎样获取灰度图的灰度值、matlab如何批量提取图像灰度值、Labview计算出图片的每个像素点的灰度值,你有程序的话求发!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存