
关于图像像素值,我想要先讲一下Java中如何组织一个图像对象BufferedImage的,
一个BufferedImage的像素数据储存在Raster中,ColorModel里面储存颜色空间,类型等
信息,当前Java只支持一下三种图像格式- JPG,PNG,GIF,如何向让Java支持其它格式,首
先要 完成Java中的图像读写接口,然后打成jar,加上启动参数- Xbootclasspath/p
newimageformatIOjar即可。
取得BufferedImage的代码如下:
File file = new File("D:\\test\\blue_flowerjpg");
BufferedImage image = ImageIOread(file);
取得像素使用getRGB,代码如下:
int type= imagegetType();
if ( type ==BufferedImageTYPE_INT_ARGB || type == BufferedImageTYPE_INT_RGB )
return (int [])imagegetRaster()getDataElements(x, y, width, height, pixels );
else
return imagegetRGB( x, y, width, height, pixels, 0, width );
写入像素,才可能用到getRaster,在type为ARGB 或RGB时,必须使用getRaster()setDataElements方式设置,其他格式直接setRGB,代码如下:
int type= imagegetType();
if ( type ==BufferedImageTYPE_INT_ARGB || type == BufferedImageTYPE_INT_RGB )
imagegetRaster()setDataElements(x, y, width, height, pixels );
else
imagesetRGB(x, y, width, height, pixels, 0, width );
1调用matlab的图像读取函数imread读,把放在work文件夹下
I = imread('样品jpg');
2变为灰度图
G = rgb2gray(I);
3双击workspace中的G项,在d出的array edit中就看到了灰度矩阵
读入rgb图像——i=imread();
然后转换成灰度图像——i=rgb2gray(i);
计算均值——mean(mean(i));
计算方差——var();
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;
}
输出:
用for循环遍历所有需要处理的文件即可。
如果文件的命名有规律(例如0001bmp, 0002bmp, ),可以用sprintf函数直接生成文件名;
如果不满足上述条件,但文件在集中存放某个文件夹中,可以用dir获取文件列表;
如果文件没有规律,存放的位置也比较乱,那就直接手写一个cell数组,用以指定要处理的文件列表。
楼上回答正确,其实还可用更为简单的方法,此为图像处理中的基础,举简例说明。\x0d\假设你需将名为face1bmp的彩色图转换为face2bmp的灰度图,代码如下:\x0d\imageName=strcat('face1bmp');%获取图像名称\x0d\I=imread(imageName);%读取彩色图像\x0d\J=rgb2gray(I);%转换为灰度图\x0d\figure(1);%窗口显示灰度图\x0d\imshow(J);\x0d\fname=strcat('face2bmp');\x0d\imwrite(J,fname);%保存为BMP格式的灰度图face2
以上就是关于java 中如何获得灰度图像的像素值,getRGB和getRaster有什么区别全部的内容,包括:java 中如何获得灰度图像的像素值,getRGB和getRaster有什么区别、怎么用matlab提取灰度值啊、如何利用matlab提取一幅图像的所有灰度值,并计算均值,方差,CV 值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)