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计算出图片的每个像素点的灰度值,你有程序的话求发!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)