java图像处理opencv,java图像处理库
下面代码中用到的源图像(来源影像)是一个已经存在的图像(图片)对象
图像剪切
对于一个已经存在的图像(图片)对象,要得到它的一个局部图像,可以使用下面的步骤:
//importJava.awt.*:
//importjava.awt.image.*:
图像褪色;
图像过滤器
cropfizer=newcropiment过滤器(25、30、75、75);//四个参数分别为图像起点坐标和宽高,即镀铬过滤器(intx,inty,intwidth,intheight),具体情况请参考美国石油学会
croppedimage=工具包。getdefaulttoolkit().创建图像(newfilteredimagesource(源图像。get source()、cropfizer));
//假如是在组件(组件)的子类中使用,可以将上面的工具包. getDefaultToolkit().去掉。
//FilteredImageSource是一个影像制作者对象。
图像缩放
对于一个已经存在的图像(图片)对象,得到它的一个缩放的图像(图片)对象可以使用图像(图片)的getscalendance(获取日历)方法:
Imagescaledimage=源图像。getscalendance(100,100,image).SCALE_DEFAULT://得到一个100乘以100的图像
Imagedoubledimage=源图像。getscalendance(源图像。get width(this)* 2、sourceImage.getHeight(this)*2、Image .SCALE_DEFAULT://得到一个放大两倍的图像,这个程序一般在一个摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆的组件中使用,而类JC组件-JC组件-JC组件-JC组件-JC组件-JC组件-JC组件-JC组件实现了图像观察者接口图像观察者(映像监测器),所有可以使用这一点。
//其它情况请参考蜜蜂!蜜蜂!
灰度变换
下面的程序使用三种方法对一个彩色图像进行灰度变换,变换的效果都不一样。一般而言,灰度变换的算法是将象素的三个颜色分量使用R*0.3克*0.59+B*0.11得到灰度值,然后将之赋值给红绿蓝,这样颜色取得的效果就是灰度的。另一种就是取红绿蓝三色中的最大值作为灰度值。爪哇岛核心包也有一种算法,但是没有看源代码,不知道具体算法是什么样的,效果和上述不同。
/*格雷菲尔特。Java */
/* @作者:寻找我*/
/*电子邮件:查找我@163.net*/
导入。awt.image.*:
publicsclassgrayffilter extendsrgbimagefilter[
intmodelstyle
publicgrayfilter()
模型canfilterindex颜色模型=true
}
pubgrayfilter(int style)>
模型canfilterindex颜色模型=true
}
pubvoidsetcolormodel(颜色模型cm)>
如果(模型取代氯模型(cm、new gray mode(cm));
}
埃尔塞夫(模型替代氯模型(cm、newgraymode(cm、模特风格));
}
}
publicintfilterRGB(intx、inty、intpixel)}
返回像素;
}
}
/*灰色模式。Java */
/* @作者:寻找我*/
/*电子邮件:查找我@163.net*/
导入。awt.image.*:
publicsclassgraymdelxtendercolor模块[
publicstaticfinalintcs _ max=0
publicstaticfinalintcs _ float=1
colormodelsourcemodel
intmodelstyle
public gray mode(colormodelsourcemodel)>
超级(源模型。getpixize());
此。源模型=源模型;
型号}
public gray mode(colormodelsourcemodel,intstyle)>
超级(源模型。getpixize());
此。源模型=源模型;
型号}
publicdsetgraystyle(intstyle)>
型号}
受保护的intgetgrayleble(intpixel)>
if(模型returnmath。max(源模型。getred(像素)、Math.max(sourceModel.getGreen(像素)、sourceModel.getBlue(像素));
}
else if(模型返回(int)(源模型。getred(像素)* 0.3源模型。获取绿色(像素)* 0.59源模型。获取蓝色(像素)* 0.11);
}
其他
返回0;
}
}
publicintgetAlpha(intpixel)>
returnsourceModel.getAlpha(像素):
}
publicintgetred(intpixel)>
returngetgraylevel(像素);
}
publicintgetGreen(intpixel)>
returngetgraylevel(像素);
}
publicintgetBlue(intpixel)>
returngetgraylevel(像素);
}
publicintinfogb(intpixel)>
intgray=getgraylevel(像素):
返回(格塔道夫(像素)24)(灰色16)(灰色8)灰色;
}
}
假如你有自己的算法或者想取得非凡的效果,你可以修改类格雷莫的方法getgraylevel().
色彩变换
根据上面的原理,我们也可以实现色彩变换,这样的效果就很多了。下面是一个反转变换的例子:
/*ReverseColorModel.java*/
/* @作者:寻找我*/
/*电子邮件:查找我@163.net*/
导入。awt.image.*:
publicsclassreversecoormodelextendscoormodel[
colormodelsourcemodel
pubreverseecolor模型(colormodelsource模型)>
超级(源模型。getpixize());
此。源模型=源模型;
}
publicintgetAlpha(intpixel)>
returnsourceModel.getAlpha(像素):
}
publicintgetred(intpixel)>
return~sourceModel.getRed(像素);
}
publicintgetGreen(intpixel)>
return~sourceModel.getGreen(像素);
}
publicintgetBlue(intpixel)>
return~sourceModel.getBlue(像素);
}
publicintinfogb(intpixel)>
返回(获得阿尔法24像素)(getred(pixel)16)(get green(pixel)8)get blue(pixel);
}
}
/*ReverseColorModel.java*/
/* @作者:寻找我*/
/*电子邮件:查找我@163.net*/
导入。awt.image.*:
publicsclassreverseffilter extendsrgbimagefilter[
pubreverseffilter()
canfilterindex颜色模型=true
}
pubvoidsetcolormodel(颜色模型cm)>
代用品氯模型(cm、newreverselormodel(cm));
}
publicintfilterRGB(intx、inty、intpixel)}
返回像素;
}
}
要想取得自己的效果,需要修改reversecolormodel。爪哇岛中的三个方法绿色,蓝色。
下面是上面的效果的一个总的演示程序。
/*GrayImage.java*/
/* @作者:寻找我*/
/*电子邮件:查找我@163.net*/
导入。awt。*:
导入。awt.image.*:
importjavax.swing.*:
导入。awt.color.*:
publicclassgrayimagextendsjframe[
图像源、灰度、灰度3、剪辑、放大
bufferedimagebimg,灰色2;
灰色滤镜过滤器,过滤器2;
imageiconii
图像过滤器
intiw,ih;
publicgrayimage()
ii=newimageicon( images/11。gif’);
来源=二。getimage();
iw=source.getWidth(此处);
ih=来源。获取身高(这个);
filter=new gray filter();
过滤器2=newgrayfilter(灰色模式).CS_FLOAT:
gray=create image(newfilteredimagesource(source。get source()、filter));
灰色3=创建图像(newfilteredimagesource(source。get source()、filter 2));
cropfizer=newcropiment过滤器(5.5,iw-5,ih-5);
clip=create image(newfilteredimagesource(source。get source()、cropfizer));
bigimg=source。getscalendance(iw * 2,ih*2,影像)。缩放_默认:
mediatrackingt=newmediatracker(this);
addimage mt(灰色,0);
尝试[
t。wait all();
}接住异常。]
}
}
publivodipaint(graphics SG)>
图形2Dg2=(二维图形)g;
big=newbufferedimage(iw,ih,缓冲区图像).TYPE_INT_RGB:
图形2 dsrcg=大。创建图形();
渲染事物=G2。getrendeingints();
srcg。setrenderinghints提示(rhs
srcg。绘图图像(来源,0,0,null);
色彩空间灰色空间=色彩空间。getinstance(颜色空间).S7-1200可编程控制器:
colorconvertopop=newlorconvertop(灰色空间,rhs
gray 2=newbufferedimage(iw,ih,缓冲图像).TYPE_INT_RGB:
操作过滤器(大,灰2);
g2.drawImage(资料来源:40、40、这个);
g2.drawImage(灰色,80,40,这);
g2.drawImage(gray2,120,40,此处);
g2.drawImage(灰度3,160,40,此处);
g2.drawImage(剪辑,40,80,这);
g2.drawImage(bigimg,80,80,this);
}
发布更新(图形SG)>
油漆(g)和:
}
public stat void main(string args[])& gt;
gray imagem=new gray image();
m。setsize(400.400);
m。set visible(true);
}
}
转自页:1
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。