Erro EXCEPTION_ACCESS_VIOLATION OpenCv

Blz, seguinte tenho um algoritmo que peguei no site http://www.larmor.com/portal/
já instalei todas as bibliotecas so que na hora que seleciono o local da imagem que devera ficar fixo o retangulo da um erro

A fatal error has been detected by the Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7708317f, pid=3412, tid=3848

JRE version: 6.0_14-b08

Java VM: Java HotSpot™ Client VM (14.0-b16 mixed mode, sharing windows-x86 )

Problematic frame:

C [ntdll.dll+0x3317f]

An error report file with more information is saved as:

C:\Users\Jonas\Documents\NetBeansProjects\OpenCV\hs_err_pid3412.log

If you would like to submit a bug report, please visit:

http://java.sun.com/webapps/bugreport/crash.jsp

The crash happened outside the Java Virtual Machine in native code.

See problematic frame for where to report the bug.

Pelo que depurei o programa quando ele passa pela linha 166 acontece o erro.
Segue a baixo o codigo fonte

[code]package opencv;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;

import javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.swing.JButton;
import javax.swing.JComponent;

import com.larmor.opencv.MatchTemplate;

public class MovimentoWebCam extends Panel implements ActionListener,
MouseListener, MouseMotionListener {

private static Player player = null;
private CaptureDeviceInfo di = null;
private MediaLocator ml = null;
private JButton matchCam = null;
private JButton selecionaArea = null;
private Component sourceComp = null;
private DoubleBufferPanel dbPanel = null;
private int areaX = 0;
private int areaY = 0;
private int areaWidth = 0;
private int areaHeight = 0;
private int stateButton;
private BufferedImage buffImgTemplate = null ;

public MovimentoWebCam() {

	stateButton = 0;

	setLayout(new BorderLayout());
	// setSize(320,240);

	selecionaArea = new JButton("Selecionar area");
	selecionaArea.addActionListener(this);

	matchCam = new JButton("Começar");
	matchCam.addActionListener(this);
	matchCam.setEnabled(false);


	String str2 = "vfw://0";
	//di = new CaptureDeviceInfo(null,new MediaLocator(str2),null);
           
            ml = new MediaLocator(str2);
	//ml = di.getLocator();

	try {
		Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, Boolean.TRUE);
		player = Manager.createRealizedPlayer(ml);
		player.start();

		if ((sourceComp = player.getVisualComponent()) != null) {
			sourceComp.addMouseMotionListener(this);
			sourceComp.addMouseListener(this);
			// sourceComp.setBounds (0, 0,
			// sourceComp.getPreferredSize().width,
			// sourceComp.getPreferredSize().height);

			dbPanel = new DoubleBufferPanel();
			dbPanel.setLayout(new BorderLayout());
			dbPanel.add(sourceComp);
			// dbPanel.setBackground(Color.BLUE);
			// dbPanel.setBounds (0, 0, sourceComp.getPreferredSize().width,
			// sourceComp.getPreferredSize().height);

			add(dbPanel, BorderLayout.CENTER);
		}
		add(selecionaArea, BorderLayout.NORTH);
		add(matchCam, BorderLayout.SOUTH);

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


public static void main(String[] args) {
	Frame f = new Frame("Web Cam");
	f.setResizable(false);
	f.addWindowListener(new WindowAdapter() {
		public void windowClosing(WindowEvent e) {
			playerclose();
			System.exit(0);
		}
	});

	MovimentoWebCam cf = new MovimentoWebCam();
	f.add("Center", cf);
	f.pack();
	// f.setSize(new Dimension(320,240));
	f.setVisible(true);

}

public static void playerclose() {
	player.close();
	player.deallocate();
}

public BufferedImage getPlayerImage() {
	// Pega uma moldura
	FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
	Buffer buf = fgc.grabFrame();

	// Convertê-lo em uma imagem
	BufferToImage btoi = new BufferToImage((VideoFormat) buf.getFormat());
	Image img = btoi.createImage(buf);

	// Converter para BufferedImage
	BufferedImage bi = new BufferedImage(sourceComp.getPreferredSize().width, sourceComp.getPreferredSize().height,	BufferedImage.TYPE_BYTE_GRAY);
	Graphics2D g = bi.createGraphics();
	g.drawImage(img, 0, 0, null);
	g.dispose();

	return bi;
}

public synchronized  void  actionPerformed(ActionEvent e) {
	JComponent c = (JComponent) e.getSource();

	if (c == selecionaArea) {
		stateButton = 1;
		player.stop();
		selecionaArea.setEnabled(false);

	} else if (c == matchCam) {

		// Validar Área
		if ((areaX >= 0)&& (areaY > 0)&& (areaWidth > 0)&& (areaHeight > 0)) {
			buffImgTemplate = getPlayerImage().getSubimage(areaX, areaY, areaWidth, areaHeight);
			MatchTemplate.displayBufferedImage(buffImgTemplate, "template");

			stateButton = 2;
			player.start();
			matchCam.setEnabled(false);
			selecionaArea.setEnabled(true);
		}
	}
}

// @Override
public void mouseClicked(MouseEvent arg0) {
}

// @Override
public void mouseEntered(MouseEvent arg0) {
}

// @Override
public void mouseExited(MouseEvent arg0) {
}

// @Override
public void mouseMoved(MouseEvent arg0) {
}

// @Override
public void mousePressed(MouseEvent arg0) {
	arg0.consume();
	if (stateButton == 1) {
		areaX = arg0.getX();
		areaY = arg0.getY();
		dbPanel.repaint();
	}
}

// @Override
public void mouseReleased(MouseEvent arg0) {
	arg0.consume();
	if (stateButton == 1) {
		areaWidth = arg0.getX() - areaX;
		areaHeight = arg0.getY() - areaY;
		dbPanel.repaint();
		matchCam.setEnabled(true);
	}
}

// @Override
public void mouseDragged(MouseEvent arg0) {
	arg0.consume();
	if (stateButton == 1) {
		areaWidth = arg0.getX() - areaX;
		areaHeight = arg0.getY() - areaY;
		dbPanel.repaint();
	}
}

class DoubleBufferPanel extends Panel {
	Image offscreen;

	/**
	 * nulo o buffer fora da tela, como parte de invalidação
	 */
	public void invalidate() {
		super.invalidate();
		offscreen = null;
	}

	/**
	 * substituir atualização para * não * apagar o fundo antes da pintura
	 */
	public void update(Graphics g) {
		paint(g);
	}


	public void paint(Graphics g) {

		if (offscreen == null) {
			offscreen = createImage(getSize().width, getSize().height);
		}

		Graphics og = offscreen.getGraphics();
		og.setClip(0, 0, getSize().width, getSize().height);
		super.paint(og);

		if (stateButton == 1) {
			Graphics2D g2 = (Graphics2D) og;
			g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
			g2.setPaint(Color.yellow);
			Rectangle2D e = new Rectangle2D.Float(areaX, areaY, areaWidth, areaHeight);
			g2.draw(e);
		} else if (stateButton == 2) {
			//modelo match
			BufferedImage buffImgSource = getPlayerImage();
			long startTime = System.currentTimeMillis();
			MatchTemplate matchObj = new MatchTemplate(buffImgSource, buffImgTemplate);
			Point matchPoint = matchObj.matchTemplateBestPoint(MatchTemplate.CV_TM_CCOEFF_NORMED);
			long totalTime = System.currentTimeMillis() - startTime;
			System.out.println("Total de tempo para correspondência:" + totalTime);

			Graphics2D g2 = (Graphics2D) og;
			g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
			g2.setPaint(Color.green);
			Rectangle2D e = new Rectangle2D.Float(matchPoint.x, matchPoint.y, areaWidth, areaHeight);
			g2.draw(e);
		}

		g.drawImage(offscreen, 0, 0, null);
		og.dispose();
	}
}

}[/code]
[youtube]http://www.youtube.com/watch?v=TrAM8_Fw3yQ&feature=player_embedded[/youtube]

Estou começando agora nesta parte de imagem, pretendo futuramente criar um sistema de reconhecimento de face em tempo real.
Desde de já agradeço a compreenção de todos.
Abraço