Getting problem while capturing image through web cam in Java -OpenCV code.
- by Chetan
Hi..
I am developing Face detector using OpenCV library in java...
I have written sample code for this,but it is giving Error while capturing image.
can any one help please.
Here is the code
import java.awt.;
import java.awt.event.;
import java.awt.image.MemoryImageSource;
import hypermedia.video.OpenCV;
@SuppressWarnings("serial")
public class FaceDetection extends Frame implements Runnable
{
///Main method.
public static void main(String[] args)
{
//System.out.println( "\nOpenCV face detection sample\n" );
new FaceDetection();
}
// program execution frame rate (millisecond)
final int FRAME_RATE = 1000/30;
OpenCV cv = null; // OpenCV Object
Thread t = null; // the sample thread
// the input video stream image
Image frame = null;
// list of all face detected area
Rectangle[] squares = new Rectangle[0];
//** Setup Frame and Object(s).
FaceDetection() {
super( "Face Detection" );
// OpenCV setup
cv = new OpenCV();
//cv.capture(1, 1, 100);
cv.capture( 320, 240 );
cv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT );
// frame setup
this.setBounds( 100, 100, cv.width, cv.height );
this.setBackground( Color.BLACK );
this.setVisible( true );
this.addKeyListener(
new KeyAdapter()
{
public void keyReleased( KeyEvent e ) {
if ( e.getKeyCode()==KeyEvent.VK_ESCAPE ) { // ESC : release OpenCV resources
cv.dispose();
System.exit(0);
}
}
}
);
// start running program
t = new Thread( this );
t.start();
}
// Draw video frame and each detected faces area.
public void paint( Graphics g ) {
// draw image
g.drawImage( frame, 0, 0, null );
// draw squares
g.setColor( Color.RED );
for( Rectangle rect : squares )
g.drawRect( rect.x, rect.y, rect.width, rect.height );
}
@SuppressWarnings("static-access")
public void run() {
while( t!=null && cv!=null ) {
try {
t.sleep( FRAME_RATE );
// grab image from video stream
cv.read();
// create a new image from cv pixels data
MemoryImageSource mis = new MemoryImageSource( cv.width, cv.height, cv.pixels(), 0, cv.width );
frame = createImage( mis );
// detect faces
squares = cv.detect( 1.2f, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 20, 20 );
// of course, repaint
repaint();
}
catch( InterruptedException e ) {;}
}
}
}
Error while starting capture : device 0