| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1038 人关注过本帖
标题:C# 如何将图片保存为矩阵形式
只看楼主 加入收藏
蓝之晴
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-10-3
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
C# 如何将图片保存为矩阵形式
具体地说就是C#中将picturebox显示的图片保存为矩阵或数组的形式,然后转化为MWArry类型
求高手指教,代码实例
搜索更多相关主题的帖子: 图片 如何 
2014-10-14 10:56
afdoa83
Rank: 4
等 级:业余侠客
威 望:7
帖 子:43
专家分:262
注 册:2012-7-31
收藏
得分:2 
据说matlab给出的文档有问题。
还有就是,C#下标是0起,matlab下标是1起
多实验试验吧
2014-10-15 10:33
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:2 
可以保存为二进制形式

Maybe
2014-10-15 16:56
chenhongwu
Rank: 1
来 自:甘肃天水
等 级:新手上路
威 望:1
帖 子:6
专家分:6
注 册:2009-6-3
收藏
得分:6 
给你一个例子吧,这是我自己写的一个代码,仅供参考哦
private double[] GetGrayArray(Bitmap srcBmp)
        {
            int left = 0;
            int top = 0;
            int width = srcBmp.Width;
            int height = srcBmp.Height;
            Rectangle rect = new Rectangle(left, top, width, height);
            //将Bitmap锁定到系统内存中,获得BitmapData
            //这里的第三个参数确定了该图像信息时rgb存储还是Argb存储
            BitmapData srcBmpData = srcBmp.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
            //位图中第一个像素数据的地址。它也可以看成是位图中的第一个扫描行
            IntPtr srcPtr = srcBmpData.Scan0;
            //将Bitmap对象的信息存放到byte数组中
            //int src_bytes = srcBmpData.Stride * height;
            int src_bytes = width * 3 * height;
            //int srcStride = srcBmpData.Stride;
            byte[] srcRGBValues = new byte[src_bytes];
            double[] grayValues = new double[width * height];
            //RGB[] rgb = new RGB[srcBmp.Width * rows];
            //复制GRB信息到byte数组
            Marshal.Copy(srcPtr, srcRGBValues, 0, src_bytes);
            //Marshal.Copy(dstPtr, dstValues, 0, dst_bytes);
            //解锁位图
            srcBmp.UnlockBits(srcBmpData);
            //灰度化处理
            int m = 0, j = 0;
            int k = 0;
            double gray = 0.00;
            //double sumGrayValue = 0.00;
            //根据Y = 0.299*R + 0.587*G + 0.114*B,intensity为亮度
            for (int i = 0; i < height; i++)  //只获取图片的rows行像素值
            {
                for (j = 0; j < width; j++)
                {
                    //只处理每行中图像像素数据,舍弃未用空间
                    //注意位图结构中RGB按BGR的顺序存储
                    k = 3 * j;
                    gray = (double)(srcRGBValues[i * width + k + 2] * 0.299
                         + srcRGBValues[i * width + k + 1] * 0.587
                         + srcRGBValues[i * width + k + 0] * 0.114);

                    grayValues[m] = gray;  //将灰度值存到double的数组中
                    m++;
                    //sumGrayValue = sumGrayValue + gray;  //计算所有扫描到的像素的灰度值
                }
            }

            return grayValues;
        }

云儿
2014-10-16 08:35
快速回复:C# 如何将图片保存为矩阵形式
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016752 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved