From 5fb39e1aa3612fb387080f392cc8fafc73b67435 Mon Sep 17 00:00:00 2001 From: Advay S Pethkar <42491924+dot9aitclass@users.noreply.github.com> Date: Sun, 6 Oct 2019 22:37:04 +0530 Subject: [PATCH] completed code --- HelloCV.java | 117 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 102 insertions(+), 15 deletions(-) diff --git a/HelloCV.java b/HelloCV.java index a14dd22..adaf047 100644 --- a/HelloCV.java +++ b/HelloCV.java @@ -1,6 +1,11 @@ package colors; +import java.util.*; + import org.opencv.core.Core; +import org.opencv.core.Scalar; import org.opencv.core.CvType; + +import org.opencv.core.Size; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.videoio.*; @@ -9,45 +14,127 @@ import java.awt.image.*; import javax.swing.*; import javax.swing.event.*; +import org.opencv.imgproc.Imgproc; public class HelloCV { + static int rll=0,gll=0,bll=0,ruu=255,guu=255,buu=255; public static void main(String[] args){ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); - Mat mat = Mat.eye(3, 3, CvType.CV_8UC1); - System.out.println("mat = " + mat.dump()); Mat frame = new Mat(); + VideoCapture camera = new VideoCapture(0); - camera.read(frame); - Imgcodecs.imwrite( "pehla.jpg", frame ); - JFrame jframe = new JFrame("Video Title"); + JFrame jframe = new JFrame("options"); + //JFrame jf2 = new JFrame("Video"); //Inform jframe what to do in the event that you close the program jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + // jf2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create a new JLabel object vidpanel - JLabel vidPanel = new JLabel("",JLabel.CENTER); - - //assign vidPanel to jframe - jframe.setContentPane(vidPanel); + JLabel vidPanel = new JLabel(""); + JButton red = new JButton("RED"); + JButton green = new JButton("GREEN"); + JButton blue = new JButton("BLUE"); + JButton Default = new JButton ("DEFAULT"); + JPanel p=new JPanel(); + p.setLayout(null); + red.setBounds(100,100,100,100); + green.setBounds(250,100,100,100); + blue.setBounds(400,100,100,100); + Default.setBounds(550,100,100,100); + vidPanel.setBounds(100,300,700,700); + p.add(red); + p.add(green); + p.add(blue); + p.add(Default); + p.add(vidPanel); + //assign vidPanel to jframe + + jframe.getContentPane().add(p,BorderLayout.CENTER); + jframe.getContentPane().add(p); + // jf2.setContentPane(vidPanel); //set frame size jframe.setSize(2000, 4000); + //jf2.setSize(2000, 4000); //make jframe visible jframe.setVisible(true); - - while (true) { + //jf2.setVisible(true); + green.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent ae) + { + rll=0;gll=74;bll=46; + ruu=255;guu=134;buu=106; + } + }); + blue.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent ae) + { + rll=0;gll=61;bll=157; + ruu=255;guu=121;buu=217; +// bll=bll+1; +// System.out.println("bl="+bll); + } + }); + red.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent ae) + { + rll=0;gll=150;bll=100; + ruu=255;guu=170;buu=160; +// gll=gll+1; +// System.out.println("gr= "+gll); + + } + }); + Default.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent ae) + { + rll=0;gll=0;bll=0; + ruu=255;guu=255;buu=255; + } + }); + while (true) { //If next video frame is available if (camera.read(frame)) { - //Create new image icon object and convert Mat to Buffered Image - ImageIcon image = new ImageIcon(Mat2BufferedImage(frame)); - //Update the image in the vidPanel - vidPanel.setIcon(image); + BufferedImage image = Mat2BufferedImage(skinDetection(frame,rll,gll,bll,ruu,guu,buu)); + ImageIcon img = new ImageIcon(image); + vidPanel.setIcon(img); //Update the vidPanel in the JFrame vidPanel.repaint(); } } + + } + public static Mat skinDetection(Mat src,int rl,int gl,int bl,int ru,int gu,int bu) { + // define the upper and lower boundaries of the HSV pixel + // intensities to be considered 'skin' + Scalar lower = new Scalar(rl, gl, bl); + Scalar upper = new Scalar(ru, gu, bu); + + // Convert to HSV + Mat hsvFrame = new Mat(src.rows(), src.cols(), CvType.CV_8U, new Scalar(3)); + Imgproc.cvtColor(src, hsvFrame, Imgproc.COLOR_RGB2YUV, 3); + + // Mask the image for skin colors + Mat skinMask = new Mat(hsvFrame.rows(), hsvFrame.cols(), CvType.CV_8U, new Scalar(3)); + Core.inRange(hsvFrame, lower, upper, skinMask); + final Size kernelSize = new Size(11, 11); + final Point anchor = new Point(-1, -1); + final int iterations = 2; + + final Size ksize = new Size(3, 3); + + Mat skin = new Mat(skinMask.rows(), skinMask.cols(), CvType.CV_8U, new Scalar(3)); + Imgproc.GaussianBlur(skinMask, skinMask, ksize, 0); + Core.bitwise_and(src, src, skin, skinMask); + + return skin; } public static BufferedImage Mat2BufferedImage(Mat m) { //Method converts a Mat to a Buffered Image