一、功能描述

将已保存的某张图片加上一些简单的滤镜效果,即将图片数据化处理成预期的效果,具体实现的滤镜效果有:黑白、马赛克、二值化、边缘化。

二、技术要点

1、读取指定文件目录下的图片,并将其像素点信息存入对应大小的二维数组。

public int[][] getImagePixel(String imgstr) throws IOException{
File fl = new File(“img/yase.jpg”);
BufferedImage bi=null;
try {
// 将文件读取为一张图片
bi = ImageIO.read(fl);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int w = bi.getWidth();
int h = bi.getHeight();
int imagedata[][] = new int[w][h];//用数组保存图片的数据
for(int i=0;i<w;i++){
for(int j=0;j<h;j++){
imagedata[i][j] = bi.getRGB(i, j);
}
}
return imagedata;
}
2、在基本窗体的按钮监听中加入对应的图像处理方法并实现。
public void actionPerformed(ActionEvent e){
String imagetype = e.getActionCommand();
switch(imagetype){
case “原图”:
new ResultUI(ie.originalImage(imagedata),imagetype);
System.out.println(“原图”);
break;
case “马赛克”:
System.out.println(“马赛克”);
new ResultUI(ie.masaikeImage(imagedata),imagetype);
break;
case “二值化”:
System.out.println(“二值化”);
new ResultUI(ie.erzhihua(imagedata),imagetype);
break;
case “边缘化”:
System.out.println(“边缘化”);
new ResultUI(ie.bianyuanhua(imagedata),imagetype);
break;
case “黑白”:
System.out.println(“黑白”);
new ResultUI(ie.heibai(imagedata),imagetype);
break;
}
}
例:
马赛克方法(原理是对数组中已保存的像素点进行处理)
public BufferedImage masaikeImage(int[][] imagedata){//马赛克
BufferedImage bi = new BufferedImage(imagedata.length,imagedata[0].length,BufferedImage.TYPE_INT_ARGB);
for(int i=0;i<imagedata.length-10;i+=10){
for(int j=0;j<imagedata[0].length-10;j+=10){
for(int a=i;a<i+10;a++){
for(int b=j;b<j+10;b++){
bi.setRGB(a, b, imagedata[i][j]);
}
}
}
}
return bi;
}

三、效果呈现

原图:

黑白:

马赛克:
二值化:
边缘化:

实践小项目----美颜相机滤镜功能(图像数据化处理)相关推荐

  1. 用Java实现相机滤镜功能(一)

    今天我们来用java实现相机滤镜功能.显然首先要有一个窗体,所以我们创建类来设置窗体,类名取为VideoCapture,这里我们简写一下,让VideoCapture类继承JFrame,作为它的子类,然 ...

  2. OpenCV实践小项目(一): 信用卡数字识别

    1. 写在前面 今天整理一个OpenCV实践的小项目, 前几天整理了一篇OpenCV处理图像的知识笔记,后面,就通过一些小项目把这些知识运用到实践中去,一个是加深理解,另一个是融会贯通,连成整体,因为 ...

  3. 前端实践小项目(一)五星好评与暂停取值

    哈喽 ~ 大家好鸭!这篇我们来看看前端实践小项目第一篇 "五星好评与暂停取值"(底部有源代码) 目录 五星好评(JS版) 五星好评(JQuery版) 暂停取值 五星好评(JS版) ...

  4. Python小项目:实现日历功能

    Python小项目:实现日历功能 功能:(1)输入年月日,输出这一天是星期几 (2)输入年份,打印该年日历 months=[0,31,28,31,30,31,30,31,31,30,31,30,31] ...

  5. OpenCV实践小项目(三) - 停车场车位实时检测

    1. 写在前面 今天整理OpenCV入门的第三个实战小项目,前面的两篇文章整理了信用卡数字识别以及文档OCR扫描, 大部分用到的是OpenCV里面的基础图像预处理技术,比如轮廓检测,边缘检测,形态学操 ...

  6. web实践小项目一:简单日程管理系统(涉及html/css,javascript,python,sql,日期处理)...

    暑假自学了些html/css,javascript和python,苦于学完无处练手几乎过目即忘...最后在同学的建议下做了个简单日程管理系统.借第一版完成之际,希望能将实践期间犯过的错误和获得的新知进 ...

  7. OpenCV实践小项目(二) -文档ocr扫描识别

    1. 写在前面 今天整理OpenCV入门的第二个实战小项目, 前一篇文章是信用卡数字识别, 主要运用了OpenCV基础图像处理操作里面的轮廓检测, 边缘检测,形态学操作, 今天的这个项目叫做文档ocr ...

  8. Web实践小项目(仅供参考)

    一.前言 这个小东西是web实践课的一个作业,只是要求纯前端,拼凑几个网页即可,故写的较为简陋,我选中的一个小方向是写一个系统的管理的,包括密码修改.操作人员管理.权限管理.人员信息.退出系统等一些列 ...

  9. 微信小程序调用相机相册功能实现

    这个其实很简单,微信提供了api 1 一般我们做个人图像选择的时候可以简单的使用 click1:function(){wx.chooseImage({success: function(res) {} ...

最新文章

  1. cs怎么加电脑人_怎么给电脑文件夹加密码?
  2. STM32串口第一个字节丢失问题的分析过程
  3. 7-1 最长连续递增子序列 (20 分)
  4. 【Spring】Spring boot 可以通过集成jolokia来使用HTTP形式访问mbean
  5. 2.Linux环境下配置Solr4.10.3
  6. sql server 语法 MSDN
  7. ubuntu切换用户root时认证失败
  8. 教你在网吧“移”电影
  9. VMware虚拟机通过光盘PE安装GHOSTxp
  10. redis过期策略及定期策略配置
  11. 自动回复html模板邮件,outlook休假自动回复
  12. 2个相同的 stm32 can通讯不成功_CAN通讯系列--CAN通讯简介1
  13. cerebro安装部署
  14. CentOS 6.8安装Docker V1.0
  15. Win7安装补丁KB2670838
  16. 响应式布局——Bootstrap
  17. 年底买基金的六大建议!
  18. 苹果微信分身版ios_苹果手机ios14系统微信分身地址安装教程
  19. java实现809*两位数=800*两位数+9*两位数,求出两位数的值。其中8*两位数的结果为两位数,9*两位数的结果为三位数
  20. 物联网蜜罐地理分布情况

热门文章

  1. 以太坊地址和公钥_以太坊地址是什么
  2. Pluecker coordinates(普吕克坐标系)介绍
  3. 皮卡丘(pikachu)SSRF
  4. 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路 1
  5. 小程序激励视频观看超过30秒,获取奖励
  6. 逻辑分页与物理分页的区别
  7. 习题6-3 二叉树重建(Tree Recovery, ULM 1997, UVa 536)
  8. 通过ROS控制真实机械臂(7)---三次样条插补
  9. 微信小程序订单列表加一个“更多”来显示/隐藏按钮
  10. 等比级数(geometric progression) 和等差数列