Wednesday, 17 May 2017

Eye and Face detection in Opencv 3.0 java

       
package opencvImpl;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
import org.opencv.video.Video;
import org.opencv.videoio.VideoCapture;
import org.opencv.videoio.Videoio;

import opencvImpl.view.ImageViewer;
import opencvImpl.view.VideoViewer;

public class VideoTest {
 static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }
public static void main(String args[]){
 VideoViewer videoViewer=new VideoViewer();
 videoViewer.createJFrame("sky");
 Mat matImg=new Mat();
 VideoCapture videoCapture=new VideoCapture(0);
 videoCapture.set(Videoio.CAP_PROP_FRAME_WIDTH, 1120);
 videoCapture.set(Videoio.CAP_PROP_FRAME_HEIGHT, 840);
 if(videoCapture.isOpened()){
  CascadeClassifier facedectector=new CascadeClassifier("D:/IMGprocesingOpenCV/opencvv3/opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml");
  CascadeClassifier eyedetecter=new CascadeClassifier("D:/IMGprocesingOpenCV/opencvv3/opencv/sources/data/haarcascades/haarcascade_eye.xml");
  CascadeClassifier smiledetecter=new CascadeClassifier("D:/IMGprocesingOpenCV/opencvv3/opencv/sources/data/haarcascades/haarcascade_smile.xml");
  MatOfRect faceDetections = new MatOfRect();
  MatOfRect eyeDetections = new MatOfRect();
  MatOfRect smileDetections = new MatOfRect();
  while(true){
   videoCapture.read(matImg);
   facedectector.detectMultiScale(matImg, faceDetections);
   for(Rect rect:faceDetections.toArray()){
   Imgproc.rectangle(matImg, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
      
   }
   eyedetecter.detectMultiScale(matImg, eyeDetections);
   for(Rect rect:eyeDetections.toArray()){
    Imgproc.rectangle(matImg, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
       
    }
//   smiledetecter.detectMultiScale(matImg, smileDetections);
//   for(Rect rect:smileDetections.toArray()){
//    Imgproc.rectangle(matImg, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
//       
//    }
   videoViewer.show(matImg);
   
   
  }
 }else {
  System.out.println("Err in CAMERA IO");
 }
}
}


package opencvImpl.view;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.WindowConstants;

import org.opencv.core.Mat;

public class VideoViewer {
 private JLabel imageView;
 public void show(Mat image){
 show(image, "");
 }
 public void show(Mat image,String windowName){
 setSystemLookAndFeel();
// JFrame frame = createJFrame(windowName);
 Image loadedImage = toBufferedImage(image);
 imageView.setIcon(new ImageIcon(loadedImage));
// frame.pack();
// frame.setLocationRelativeTo(null);
// frame.setVisible(true);
 }
 public JFrame createJFrame(String windowName) {
 JFrame frame = new JFrame(windowName);
 imageView = new JLabel();
 final JScrollPane imageScrollPane = new JScrollPane(imageView);
 imageScrollPane.setPreferredSize(new Dimension(640, 480));
 frame.add(imageScrollPane, BorderLayout.CENTER);
 frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
 frame.pack();
 frame.setLocationRelativeTo(null);
  frame.setVisible(true);
 return frame;
 }
 private void setSystemLookAndFeel() {
 try {
 UIManager.setLookAndFeel
 (UIManager.getSystemLookAndFeelClassName());
 } catch (ClassNotFoundException e) {
 e.printStackTrace();
 } catch (InstantiationException e) {
 e.printStackTrace();
 } catch (IllegalAccessException e) {
 e.printStackTrace();
 } catch (UnsupportedLookAndFeelException e) {
 e.printStackTrace();
 }
 }
 public Image toBufferedImage(Mat matrix){
 int type = BufferedImage.TYPE_BYTE_GRAY;
 if ( matrix.channels() > 1 ) {
 type = BufferedImage.TYPE_3BYTE_BGR;
 }
 int bufferSize = matrix.channels()*matrix.cols()*matrix.rows();
 byte [] buffer = new byte[bufferSize];
 matrix.get(0,0,buffer); // get all the pixels
 BufferedImage image = new BufferedImage(matrix.cols(),matrix.
 rows(), type);
 final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
 System.arraycopy(buffer, 0, targetPixels, 0, buffer.length);
 return image;
 }
 
}

 

OutPut



Thursday, 4 May 2017

Google PlacePicker and map Example in Android

       
//You should get Your key from google developer console .

package com.example.kiit1.mymap;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.common.GooglePlayServicesRepairableException;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.places.Place;
import com.google.android.gms.location.places.Places;
import com.google.android.gms.location.places.ui.PlacePicker;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback,GoogleApiClient.OnConnectionFailedListener {
    private GoogleApiClient mGoogleApiClient;
    private GoogleMap mMap;
    protected LocationManager locationManager;
    protected LocationListener locationListener;
    protected Context context;
    double lati,longi;
    GPSTracker gps;
    Button locUpdate;
    Button placePicker;
     View rootView=null;
    private static final int REQUEST_PLACE_PICKER = 1000;

    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);

        mapFragment.getMapAsync(this);

        mGoogleApiClient = new GoogleApiClient
                .Builder(this)
                .addApi(Places.GEO_DATA_API)
                .addApi(Places.PLACE_DETECTION_API)
                .enableAutoManage(this, this)
                .build();

       // rootView=View.inflate(R.layout.activity_maps,getApplicationContext(),false);
        // create class object        gps = new GPSTracker(MapsActivity.this);
        rootView=mapFragment.getView();
        locUpdate=(Button) rootView.findViewById(R.id.locupdate);
        placePicker=(Button)rootView.findViewById(R.id.picker);

        // check if GPS enabled        if(gps.canGetLocation()){

            lati = gps.getLatitude();
            longi = gps.getLongitude();

            // \n is for new line            Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + lati + "\nLong: " + longi, Toast.LENGTH_LONG).show();
        }else{
            // can't get location            // GPS or Network is not enabled            // Ask user to enable GPS/network in settings            gps.showSettingsAlert();
        }

    }


    /**     * Manipulates the map once available.     * This callback is triggered when the map is ready to be used.     * This is where we can add markers or lines, add listeners or move the camera. In this case,     * we just add a marker near Sydney, Australia.     * If Google Play services is not installed on the device, the user will be prompted to install     * it inside the SupportMapFragment. This method will only be triggered once the user has     * installed Google Play services and returned to the app.     */    @Override    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney and move the camera        LatLng sydney = new LatLng(lati, longi);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
        mMap.animateCamera( CameraUpdateFactory.zoomTo( 17.0f ) );
        locUpdate.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View v) {
                gps = new GPSTracker(MapsActivity.this);

                locUpdate=(Button) rootView.findViewById(R.id.locupdate);

                // check if GPS enabled                if(gps.canGetLocation()){

                    lati = gps.getLatitude();
                    longi = gps.getLongitude();

                    // \n is for new line                    Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + lati + "\nLong: " + longi, Toast.LENGTH_LONG).show();
                }else{
                    // can't get location                    // GPS or Network is not enabled                    // Ask user to enable GPS/network in settings                    gps.showSettingsAlert();
                }
            }
        });
        //for place picker        placePicker.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View v) {
                try {
                    PlacePicker.IntentBuilder intentBuilder =
                            new PlacePicker.IntentBuilder();
                    Intent intent = intentBuilder.build(MapsActivity.this);
                    // Start the intent by requesting a result,                    // identified by a request code.                    startActivityForResult(intent, REQUEST_PLACE_PICKER);

                } catch (GooglePlayServicesRepairableException e) {
                    // ...                } catch (GooglePlayServicesNotAvailableException e) {
                    // ...                }
            }
        });

    }

    @Override    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        Toast.makeText(getApplicationContext(), "Your Connection is not there " , Toast.LENGTH_LONG).show();
    }
    @Override    protected void onActivityResult(int requestCode,
                                    int resultCode, Intent data) {

        if ( resultCode == Activity.RESULT_OK) {

            // The user has selected a place. Extract the name and address.            final Place place = PlacePicker.getPlace(data, this);

            final CharSequence name = place.getName();
            final CharSequence address = place.getAddress();
            String attributions = PlacePicker.getAttributions(data);
            if (attributions == null) {
                attributions = "";
            }
            Toast.makeText(getApplicationContext(), "Your loc= " +name+" and "+address , Toast.LENGTH_LONG).show();
           /* mViewName.setText(name);            mViewAddress.setText(address);            mViewAttributions.setText(Html.fromHtml(attributions));*/
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
}
//GPSTracker
package com.example.kiit1.mymap;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.app.AlertDialog;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings;
import android.util.Log;


public class GPSTracker extends Service implements LocationListener{
    private final Context mContext;

    // flag for GPS status
    boolean isGPSEnabled = false;

    // flag for network status
    boolean isNetworkEnabled = false;

    // flag for GPS status
    boolean canGetLocation = false;

    Location location; // location
    double latitude; // latitude
    double longitude; // longitude

    // The minimum distance to change Updates in meters
    private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters

    // The minimum time between updates in milliseconds
    private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute

    // Declaring a Location Manager
    protected LocationManager locationManager;

    public GPSTracker(Context context) {
        this.mContext = context;
        getLocation();
    }

    public Location getLocation() {
        try {
            locationManager = (LocationManager) mContext
                    .getSystemService(LOCATION_SERVICE);

            // getting GPS status
            isGPSEnabled = locationManager
                    .isProviderEnabled(LocationManager.GPS_PROVIDER);

            // getting network status
            isNetworkEnabled = locationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

            if (!isGPSEnabled && !isNetworkEnabled) {
                // no network provider is enabled
            } else {
                this.canGetLocation = true;
                // First get location from Network Provider
                if (isNetworkEnabled) {
                    locationManager.requestLocationUpdates(
                            LocationManager.NETWORK_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    Log.d("Network", "Network");
                    if (locationManager != null) {
                        location = locationManager
                                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                    }
                }
                // if GPS Enabled get lat/long using GPS Services
                if (isGPSEnabled) {
                    if (location == null) {
                        locationManager.requestLocationUpdates(
                                LocationManager.GPS_PROVIDER,
                                MIN_TIME_BW_UPDATES,
                                MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                        Log.d("GPS Enabled", "GPS Enabled");
                        if (locationManager != null) {
                            location = locationManager
                                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                            if (location != null) {
                                latitude = location.getLatitude();
                                longitude = location.getLongitude();
                            }
                        }
                    }
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return location;
    }

    /**
     * Stop using GPS listener
     * Calling this function will stop using GPS in your app
     * */
    public void stopUsingGPS(){
        if(locationManager != null){
            locationManager.removeUpdates(GPSTracker.this);
        }
    }

    /**
     * Function to get latitude
     * */
    public double getLatitude(){
        if(location != null){
            latitude = location.getLatitude();
        }

        // return latitude
        return latitude;
    }

    /**
     * Function to get longitude
     * */
    public double getLongitude(){
        if(location != null){
            longitude = location.getLongitude();
        }

        // return longitude
        return longitude;
    }

    /**
     * Function to check GPS/wifi enabled
     * @return boolean
     * */
    public boolean canGetLocation() {
        return this.canGetLocation;
    }

    /**
     * Function to show settings alert dialog
     * On pressing Settings button will lauch Settings Options
     * */
    public void showSettingsAlert(){
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

        // Setting Dialog Title
        alertDialog.setTitle("GPS is settings");

        // Setting Dialog Message
        alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");

        // On pressing Settings button
        alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int which) {
                Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                mContext.startActivity(intent);
            }
        });

        // on pressing cancel button
        alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });

        // Showing Alert Message
        alertDialog.show();
    }

    @Override
    public void onLocationChanged(Location location) {
    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }
}



XML(UI)

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.kiit1.mymap.MapsActivity" >


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right|bottom"
        android:text="locUdatae"
        android:id="@+id/locupdate"
        android:padding="10dp"
        android:layout_marginTop="20dp"
        android:paddingRight="10dp"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left|bottom"
        android:text="PlacePicker"
        android:id="@+id/picker"
        android:padding="10dp"
        android:layout_marginTop="20dp"
        android:paddingRight="10dp"/>
    </fragment>

Permission 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>




Sunday, 19 February 2017

Object and face detection in OpenCv java

       
package com.test.motion.detection;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.highgui.Highgui;
import org.opencv.highgui.VideoCapture;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;

public class MyTest {
 static OpenCVWindow openCVWindow,openCVWindow1;
    static Mat image;
 public static void main(String[] args) {
  
  System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
  openCVWindow=new OpenCVWindow(1000,600);
  openCVWindow1=new OpenCVWindow(600,600);
       readImgFromCam();  
 }
 public static void readImgFromCam() {
  try {
   image=Highgui.imread("C:/Users/kiit1/Desktop/noface.jpg");
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  CascadeClassifier faceDetector = new CascadeClassifier("D:/javaTech/OpenCV/opencv/sources/data/lbpcascades/lbpcascade_frontalface.xml");
  
  VideoCapture cam=new VideoCapture(0);//"D:\\karana\\aVid.MP4"
  while(true){
 
   if(!cam.isOpened()){
    cam.open(0);
    System.out.println("No cam Found....");
   }else {
    }
   Mat frameMat=new Mat();
   Mat newmMat=new Mat();
   Mat cropImg=new Mat();
   MatOfRect matOfRect=new MatOfRect();
   //
   Mat blurredImage = new Mat();
   Mat hsvImage = new Mat();
   Mat mask = new Mat();
   Mat morphOutput = new Mat();
   Mat frame;
   cam.read(frameMat);
   Imgproc.resize(frameMat, newmMat, new Size(1000,600));
      
   frame=newmMat;
   Imgproc.blur(frame, blurredImage, new Size(7, 7));
   
   Imgproc.cvtColor(blurredImage, hsvImage, Imgproc.COLOR_BGR2HSV);
   
   Scalar minValues = new Scalar(0, 0,0);
   Scalar maxValues = new Scalar(180, 180,180);
   
   
   Core.inRange(hsvImage,minValues, maxValues, mask);
   // morphological operators
   // dilate with large element, erode with small ones
   Mat dilateElement = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(24, 24));
   Mat erodeElement = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(12, 12));
   
   Imgproc.erode(mask, morphOutput, erodeElement);
   Imgproc.erode(mask, morphOutput, erodeElement);//openCVWindow.showImage(morphOutput);
   
   Imgproc.dilate(mask, morphOutput, dilateElement);
   Imgproc.dilate(mask, morphOutput, dilateElement);
   
   frame = findAndDrawBalls(morphOutput, frame);
   
   faceDetector.detectMultiScale(newmMat, matOfRect);
   //for face detect
   for(Rect rect:matOfRect.toArray()){
   // Core.rectangle(new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
                    cropImg=newmMat.submat(rect);
          Core.rectangle(newmMat, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
   }
   try{
   openCVWindow1.showImage(cropImg); 
   }catch(Exception e){
    openCVWindow1.showImage(image);
   }
   //openCVWindow.showImage(frame);
   openCVWindow.showImage(newmMat);

   
  }
  //cam.release();
  

  
 }
 private static Mat findAndDrawBalls(Mat maskedImage, Mat frame)
 {
  // init
  List<MatOfPoint> contours = new ArrayList<>();
  Mat hierarchy = new Mat();
  
  // find contours
  Imgproc.findContours(maskedImage, contours, hierarchy, Imgproc.RETR_CCOMP, Imgproc.CHAIN_APPROX_SIMPLE);
  
  // if any contour exist...
  if (hierarchy.size().height > 0 && hierarchy.size().width > 0)
  {
   // for each contour, display it in blue
   for (int idx = 0; idx >= 0; idx = (int) hierarchy.get(0, idx)[0])
   {
    Imgproc.drawContours(frame, contours, idx, new Scalar(250, 0, 0));
   }
  }
  
  return frame;
 }
 

}



import java.awt.Dimension;
import java.io.ByteArrayInputStream;
import java.io.InputStream;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

import org.opencv.core.Mat;
import org.opencv.core.MatOfByte;
import org.opencv.highgui.Highgui;

public class OpenCVWindow extends JFrame{
 
 private static final long serialVersionUID = 1L;
 Sheet sheet;
 int height, width;


 public OpenCVWindow( int length, int breadth)
 {
  width = length;
  height = breadth;
  sheet = new Sheet(breadth,length);
  
  this.setSize(new Dimension(length, breadth));
  this.add(sheet);

  this.setFocusable(true);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setVisible(true);
  
 }
 


 public void showImage(Mat m)
 {
  MatOfByte matOfByte = new MatOfByte();
  Highgui.imencode(".jpg", m, matOfByte);
  
  byte[] byteArray = matOfByte.toArray();
  try
  {

   InputStream in = new ByteArrayInputStream(byteArray);
   sheet.paintSheet(ImageIO.read(in));
   
  } catch (Exception e)
  {
   e.printStackTrace();
  }
 }
}

import java.awt.Graphics;
import java.awt.image.BufferedImage;

import javax.swing.JPanel;

public class Sheet extends JPanel
{
 private static final long serialVersionUID = 1L;
 BufferedImage image;
 int width, height;

 public Sheet( int h, int w)
 {
  width = w;
  height = h;

  setSize(w, h);
 }

 public void paintSheet(BufferedImage img)
 {
  image = img;
  repaint();
 }

 public void paintComponent(Graphics g)
 {
  g.drawImage(image, 0, 0, width, height, this);
 }
}

                                          OUTPUT

Friday, 10 February 2017

Face detection by video processing in Java Using Open CV !

Please setup Your IDE For OpenCV


       
package com.test.motion.detection;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.highgui.VideoCapture;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;

public class MyTest {
 static OpenCVWindow openCVWindow;
  
 public static void main(String[] args) {
  System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
  openCVWindow=new OpenCVWindow(1000,600);

       readImgFromCam();  
 }
 public static void readImgFromCam() {
  CascadeClassifier faceDetector = new CascadeClassifier("D:/javaTech/OpenCV/opencv/sources/data/lbpcascades/lbpcascade_frontalface.xml");
  
  VideoCapture cam=new VideoCapture(0);
  while(true){
   
   if(!cam.isOpened()){
    cam.open(0);
    System.out.println("No cam Found....");
   }else {
    }
   Mat frameMat=new Mat();
   Mat newmMat=new Mat();
   MatOfRect matOfRect=new MatOfRect();
      
   
   cam.read(frameMat);
   Imgproc.resize(frameMat, newmMat, new Size(1000,600));
   
   faceDetector.detectMultiScale(newmMat, matOfRect);
   
   for(Rect rect:matOfRect.toArray()){
   // Core.rectangle(new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));

          Core.rectangle(newmMat, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
   }
   
   openCVWindow.showImage(newmMat);
   

   
  }
  //cam.release();
  

  
 }

}



 package com.test.motion.detection;

import java.awt.Dimension;
import java.io.ByteArrayInputStream;
import java.io.InputStream;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

import org.opencv.core.Mat;
import org.opencv.core.MatOfByte;
import org.opencv.highgui.Highgui;

public class OpenCVWindow extends JFrame{
 
 private static final long serialVersionUID = 1L;
 Sheet sheet;
 int height, width;


 public OpenCVWindow( int length, int breadth)
 {
  width = length;
  height = breadth;
  sheet = new Sheet(breadth,length);
  
  this.setSize(new Dimension(length, breadth));
  this.add(sheet);

  this.setFocusable(true);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setVisible(true);
  
 }
 


 public void showImage(Mat m)
 {
  MatOfByte matOfByte = new MatOfByte();
  Highgui.imencode(".jpg", m, matOfByte);
  
  byte[] byteArray = matOfByte.toArray();
  try
  {

   InputStream in = new ByteArrayInputStream(byteArray);
   sheet.paintSheet(ImageIO.read(in));
   
  } catch (Exception e)
  {
   e.printStackTrace();
  }
 }
}

package com.test.motion.detection;

import java.awt.Graphics;
import java.awt.image.BufferedImage;

import javax.swing.JPanel;

public class Sheet extends JPanel
{
 private static final long serialVersionUID = 1L;
 BufferedImage image;
 int width, height;

 public Sheet( int h, int w)
 {
  width = w;
  height = h;

  setSize(w, h);
 }

 public void paintSheet(BufferedImage img)
 {
  image = img;
  repaint();
 }

 public void paintComponent(Graphics g)
 {
  g.drawImage(image, 0, 0, width, height, this);
 }
}


OUTPUT




Wednesday, 8 February 2017

How to watch a folder in Java ?

       
import static java.nio.file.LinkOption.NOFOLLOW_LINKS;
import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;
import static java.nio.file.StandardWatchEventKinds.OVERFLOW;
import static java.nio.file.StandardWatchEventKinds.ENTRY_DELETE;
import static java.nio.file.StandardWatchEventKinds.ENTRY_MODIFY;

import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.WatchEvent;
import java.nio.file.WatchEvent.Kind;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;

public class MainWatch {

    public static void watchDirectoryPath(Path path) {
        // Sanity check - Check if path is a folder
        try {
            Boolean isFolder = (Boolean) Files.getAttribute(path,
                    "basic:isDirectory", NOFOLLOW_LINKS);
            if (!isFolder) {
                throw new IllegalArgumentException("Path: " + path
                        + " is not a folder");
            }
        } catch (IOException ioe) {
            // Folder does not exists
            ioe.printStackTrace();
        }

        System.out.println("Watching path: " + path);

        // We obtain the file system of the Path
        FileSystem fs = path.getFileSystem();

        // We create the new WatchService using the new try() block
        try (WatchService service = fs.newWatchService()) {

            // We register the path to the service
            // We watch for creation events
            path.register(service, ENTRY_CREATE,ENTRY_MODIFY,ENTRY_DELETE);
            
            // Start the infinite polling loop
            WatchKey key = null;
            while (true) {
                key = service.take();

                // Dequeueing events
                Kind<?> kind = null;
                for (WatchEvent<?> watchEvent : key.pollEvents()) {
                    // Get the type of the event
                    kind = watchEvent.kind();
                    if (OVERFLOW == kind) {
                        continue; // loop
                    } else if (ENTRY_CREATE == kind) {
                        // A new Path was created
                        Path newPath = ((WatchEvent<Path>) watchEvent)
                                .context();
                        // Output
                        System.out.println("New path created: " + newPath);
                    } else if (ENTRY_MODIFY == kind) {
                        // modified
                        Path newPath = ((WatchEvent<Path>) watchEvent)
                                .context();
                        // Output
                        System.out.println("New path modified: " + newPath);
                    }
                }

                if (!key.reset()) {
                    break; // loop
                }
            }

        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (InterruptedException ie) {
            ie.printStackTrace();
        }

    }

    public static void main(String[] args) throws IOException,
            InterruptedException {
        
        File dir = new File("D:\\");
        watchDirectoryPath(dir.toPath());
    }
    }

 

Friday, 27 January 2017

2nd Step password Cheeking In java

Here i hard code my password As "sibu".Run the code And enjoy.



       /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package privatemgr;

/**
 *
 * @author kiit1
 */
public class myfreame extends javax.swing.JFrame {

    /**
     * Creates new form myfreame
     */
    public myfreame() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jInternalFrame1 = new javax.swing.JInternalFrame();
        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                formFocusLost(evt);
            }
        });
        addWindowFocusListener(new java.awt.event.WindowFocusListener() {
            public void windowGainedFocus(java.awt.event.WindowEvent evt) {
            }
            public void windowLostFocus(java.awt.event.WindowEvent evt) {
                formWindowLostFocus(evt);
            }
        });
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosed(java.awt.event.WindowEvent evt) {
                formWindowClosed(evt);
            }
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
            public void windowDeactivated(java.awt.event.WindowEvent evt) {
                formWindowDeactivated(evt);
            }
        });

        jInternalFrame1.setVisible(true);

        jTextField1.setText("Ans Here");
        jTextField1.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                jTextField1FocusGained(evt);
            }
        });

        jButton1.setText("Ok");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jInternalFrame1Layout = new javax.swing.GroupLayout(jInternalFrame1.getContentPane());
        jInternalFrame1.getContentPane().setLayout(jInternalFrame1Layout);
        jInternalFrame1Layout.setHorizontalGroup(
            jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jInternalFrame1Layout.createSequentialGroup()
                .addGroup(jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jInternalFrame1Layout.createSequentialGroup()
                        .addGap(69, 69, 69)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 155, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jInternalFrame1Layout.createSequentialGroup()
                        .addGap(100, 100, 100)
                        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(59, Short.MAX_VALUE))
        );
        jInternalFrame1Layout.setVerticalGroup(
            jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jInternalFrame1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jButton1)
                .addContainerGap(104, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(39, 39, 39)
                .addComponent(jInternalFrame1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(62, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(32, 32, 32)
                .addComponent(jInternalFrame1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(62, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:  
        String msg=(String)jTextField1.getText();
        System.out.println("privatemgr.myfreame.jButton1ActionPerformed()"+msg);
        if (msg.equals("sibu")){
            System.exit(0);
        }
        else{
            try {
                Process process = Runtime.getRuntime().exec("rundll32.exe user32.dll, LockWorkStation");
            } catch (Exception e) {
            }
        }
    }                                        

    private void jTextField1FocusGained(java.awt.event.FocusEvent evt) {                                        
        // TODO add your handling code here:
    }                                       

    private void formFocusLost(java.awt.event.FocusEvent evt) {                               
        // TODO add your handling code here:
        try {
                Process process = Runtime.getRuntime().exec("rundll32.exe user32.dll, LockWorkStation");
            } catch (Exception e) {
                e.printStackTrace();
            }
    }                              

    private void formWindowLostFocus(java.awt.event.WindowEvent evt) {                                     
        // TODO add your handling code here:
        try {
                Process process = Runtime.getRuntime().exec("rundll32.exe user32.dll, LockWorkStation");
            } catch (Exception e) {
            }
    }                                    

    private void formWindowClosed(java.awt.event.WindowEvent evt) {                                  
        // TODO add your handling code here:
                 new myfreame().setVisible(true);
                 try {
                Process process = Runtime.getRuntime().exec("rundll32.exe user32.dll, LockWorkStation");
            } catch (Exception e) {
            }
    }                                 

    private void formWindowDeactivated(java.awt.event.WindowEvent evt) {                                       
        // TODO add your handling code here:
                 new myfreame().setVisible(true);
                 try {
                Process process = Runtime.getRuntime().exec("rundll32.exe user32.dll, LockWorkStation");
            } catch (Exception e) {
            }
    }                                      

    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
        // TODO add your handling code here:
        try {
                Process process = Runtime.getRuntime().exec("rundll32.exe user32.dll, LockWorkStation");
            } catch (Exception e) {
            }
    }                                  

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(myfreame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(myfreame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(myfreame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(myfreame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new myfreame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JInternalFrame jInternalFrame1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   
}