P8美颜相机的实现

news/2024/10/31 3:24:24/

美颜相机

    • 一. 基础知识
    • 二. 图片处理
      • 将一个图片转化为一个二维数组并封装
    • 三.写一个界面并添加画板和按钮
    • 四. 添加监听器并将图片信息传递给监听器中
    • 五.马赛克
    • 六.灰度
    • 七.素描
    • 美白
    • 油画
    • 轮廓检测

一. 基础知识

  • 一幅图就是无数个像素点组成,可以看成宽w高h的二维数组
  • 图像处理的本质是:对代表图像二维数组中的值进行计算
  • 每个像素有自己的RGB值,范围是0-255
    红色R 255 G 0 B 0
    绿色R 0 G 255 B 0
    蓝色R 0 G 0 B 255
  • RGB三个值相等的时候就是灰色,值越大,越接近黑色,越小越接近白色
  • 任意一个int型整数可以代表一个RGB,通过移位以及按位与运算可以分别获得RGB的值,反过来也可以
  • 像素的拆分
                int red = (Pixel >> 16) & 0xFF;int green = (Pixel >> 8) & 0xFF;int blue = (Pixel >> 0) & 0xFF;
  • 像素的合成
        int value = ((a) << 24) |((r) << 16) |((g ) << 8) |((b ) << 0);System.out.println (value);

二. 图片处理

将一个图片转化为一个二维数组并封装

  • 这里涉及到文件操作、IO异常处理
  • 关于File类的使用
    File类是Java提供的针对磁盘中的文件或者目录转换对象的包装类。一个File对象可以代表一个文件或者目录,File对象可以实现获取文件和目录属性等功能,可以实现对文件和目录的创建 删除等功能。
  • 关于BufferedImage类的使用
    作用:一幅图片加载到内存中(BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便地操作这个图片),提供获得绘图对象、图像缩放、选择图像平滑度等功能,通常用来做图片大小变换、图片变灰、设置透明不透明等。
  • 关于ImageIO
    提供read()和write()静态方法,读写图片
   public void getImagePixels(String path){File file = new File(path);try{bufferedImage = ImageIO.read(file);srcImageArray = new int[bufferedImage.getWidth()][bufferedImage.getHeight()];for(int i=0;i<srcImageArray.length;i++){for(int j=0;j<srcImageArray[i].length;j++){srcImageArray[i][j] = bufferedImage.getRGB(i,j);}}}catch(IOException e){e.printStackTrace();}}

三.写一个界面并添加画板和按钮

import javax.swing.*;
import java.awt.*;public class CameraUI {String btn[] ={"原图","马赛克","圆点马赛克","灰度","素描","油画","轮廓检测","美白"};public void initUI(){JFrame jf = new JFrame();jf.setTitle("美颜相机");jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setSize(1100,600);JPanel showPanel = new JPanel();showPanel.setBackground(Color.LIGHT_GRAY);JPanel btnPanel = new JPanel();btnPanel.setBackground(Color.WHITE);btnPanel.setPreferredSize(new Dimension(200,0));initButtonPanel(btnPanel);jf.add(showPanel,BorderLayout.CENTER);jf.add(btnPanel,BorderLayout.WEST);jf.setVisible(true);}public void initButtonPanel(JPanel btnPanel){for(int i=0;i<btn.length;i++){JButton bt = new JButton(btn[i]);bt.setPreferredSize(new Dimension(95,35));bt.setBackground(Color.WHITE);btnPanel.add(bt);}}public static void main(String[] args){new CameraUI().initUI();}}

四. 添加监听器并将图片信息传递给监听器中

CameraListener cl = new CameraListener();
cl.setPanel(showPanel);

五.马赛克

    public void drawMosaicImage(Graphics g){for(int i=0;i<width;i+=10){for(int j=0 ;j<height;j+=10){int pixel = srcImageArray[i][j];Color color = new Color(pixel);g.setColor(color);g.fillRect(i,j,10,10);}}}

六.灰度

    public void drawGrayImage(Graphics g){for(int i=0;i<width;i++){for(int j=0;j<height;j++){int Pixel = srcImageArray[i][j];int red =(Pixel>>16)&0xFF;int green =(Pixel>>8)&0xFF;int blue = (Pixel>>0)&0xFF;int gray = (red +green +blue)/3;Color color = new Color(gray,gray,gray);g.setColor(color);g.fillRect(i,j,1,1);}}}

七.素描

public void drawBinaryImage(Graphics g){for(int i=0;i<width;i++){for(int j=0;j<height;j++){int pixel =srcImageArray[i][j];int red = (pixel >> 16) & 0xFF;int green = (pixel >> 8) & 0xFF;int blue = (pixel >> 0) & 0xFF;int gray = (red + green + blue) / 3;if(gray < 127){g.setColor (Color.BLACK);} else{g.setColor (Color.WHITE);}g.fillRect (i, j, 1, 1);}}}

美白

    public void drawWhiteImage(Graphics g) {for (int i = 0; i < width; i++) {for (int j = 0; j < height; j++) {int pixel = srcImageArray[i][j];Color color = new Color(pixel);int red = (pixel >> 16) & 0xFF;int green = (pixel >> 8) & 0xFF;int blue = (pixel >> 0) & 0xFF;if (red < 235 && green < 235 && blue < 235) {Color color1 = new Color(red + 20, green + 20, blue + 20);g.setColor(color1);}else{g.setColor(color);}g.fillRect(i,j,1,1);}}}

油画

    public void drawOilImage(Graphics g){Random random = new Random ();for(int i = 0; i < width; i += 3){for(int j = 0; j < height; j += 3){int pixel = srcImageArray[i][j];Color color = new Color (pixel);g.setColor (color);g.fillOval (i, j, random.nextInt (8) + 5, random.nextInt (8) + 5);}}}

轮廓检测

    public void drawImage_02(Graphics g) {for (int i = 0; i < width - 2; i++) {for (int j = 0; j < height - 2; j++) {int pixel = srcImageArray[i][j];int red = (pixel >> 16) & 0xFF;int green = (pixel >> 8) & 0xFF;int blue = (pixel >> 0) & 0xFF;int gray = (red + green + blue) / 3;int pixel1 = srcImageArray[i + 2][j + 2];int red1 = (pixel1 >> 16) & 0xFF;int green1 = (pixel1 >> 8) & 0xFF;int blue1 = (pixel1 >> 0) & 0xFF;int gray1 = (red1 + green1 + blue1) / 3;if (Math.abs(gray - gray1) > 25) {bufferedImage.setRGB(i, j, Color.BLACK.getRGB());} else {bufferedImage.setRGB(i, j, Color.WHITE.getRGB());}}}g.drawImage(bufferedImage, 0, 0, null);}

http://www.ppmy.cn/news/437089.html

相关文章

大疆口袋相机美颜怎么设置_大疆(DJI)Pocket2 | 深度测评口袋相机:超多配件随心搭,自带美颜的拍摄助手!-极果...

写在前面 你真的需要一台DJI Pocket 2吗?嘿,大家好~我是抖音博主无情剪辑狗,作为一名摄影教学类博主很高兴能体验到DJI Pocket 2,经过自己一个星期的体验,来和大家分享一下这款产品我的心得体会以及什么样的人适合入手这样一台设备。 下面通过这则视频可以先简单的了解一…

基于OpenCV和OpenGL 的简易美颜相机

版本信息 AndroidStudio 3.5.2 OpenCV 4.1.2 OpenGL 2 OpenCV是什么 维基百科 在本Demo中&#xff0c;OpenCV实现面部识别功能 OpenGL是什么 维基百科 在本Demo中&#xff0c;OpenGL实现美颜功能 配置OpenCV环境 在AndroidStudio中新建C项目 下载OpenCV Android版 …

美颜相机的设计与实现

美颜相机的实现&#xff08;利用Webcam&#xff09; 如何实现美颜相机&#xff1f; 首先&#xff0c;需要导入三个外部jar包来调用摄像头 美颜相机是要调用我们的电脑摄像头实时获取我们的视频数据&#xff0c;视频就是由一帧一帧的图片组成的&#xff0c;所以我们需要先将一…

java简易美颜相机

一、图片处理的原理 首先我们知道数码照片只要是存储在计算机上的内容都是二进制码组成&#xff0c;而图片RGB值是由三组byte组成的&#xff08; 255.0.0&#xff08;红色&#xff09;&#xff09;&#xff0c;所以它可以看成一个整数&#xff0c;红色即为&#xff1a;1671168…

NDK 开发实战 - 实现相机美颜功能

在 《图形图像处理 - 实现图片的美容效果》 一文中提到了图片的美容&#xff0c;采用双边滤波算法来实现&#xff0c;具体的算法流程和实现思路&#xff0c;大家可以在上篇文章中了解&#xff0c;这篇文章就在不再反复啰嗦了。这里我们再次来看下处理效果&#xff1a; 上面的效…

iOS-美颜相机 by GPUImage

之前网上有个段子说&#xff1a;日本女人靠化妆&#xff0c;韩国女人靠整容&#xff0c;中国女人靠美颜 足以证明相机美颜功能在中国地位是多么高&#xff0c;关于美颜相机的 App 在中国是那么的火 其实美颜相机的实现原理很简单&#xff0c;就是给采集到的图像通过添加滤镜进…

android 美颜相机开发,Android OpenGL ES从入门到进阶(一)—— 五分钟开发一款美颜相机...

源码链接:https://github.com/smzhldr/AGLFramework 一、前言 商店里有数十款的美颜相机类产品,以及像抖音,唱吧之类带有视频的软件,功能很强大,其实现原理基本上都是以OpenGL ES为核心的特效处理,笔者码了一个很轻量级的Android OpenGL ES及Camera开发框架,意在使用的时…

android自定义美颜相机,效果最自然 美颜相机for Android版更新

【IT168 资讯】备受爱自拍女生追捧的手机自拍神器“美颜相机”安卓版在八月初迎来了又一次重大改版&#xff0c;跟iPhone最新版一样&#xff0c;美颜相机安卓版1.3也在“自拍”功能中新增加了“美颜特效”模式&#xff0c;此外自拍瞬间的祛黑眼圈功能及祛斑功能再度升级&#x…