jloyd / javacv

Automatically exported from code.google.com/p/javacv
GNU General Public License v2.0
0 stars 0 forks source link

cvSaveImage Crashes on jdk6 update 21 #16

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
    public static void main(String[] args) {
        IplImage image = cvLoadImage("c:\\teste.jpg");
        if(image != null){
            System.out.println("OK");
            cvSmooth(image, image, CV_GAUSSIAN, 3, 0, 0, 0);
            cvSaveImage("c:\\testecv.jpg", image);

        }
    }

What is the expected output? What do you see instead?
Save the cvImage

What version of the product are you using? On what operating system?
the last version on winxp

Please provide any additional information below.

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x035f13e0, pid=4060, tid=3536
#
# JRE version: 6.0_21-b06
# Java VM: Java HotSpot(TM) Client VM (17.0-b16 mixed mode, sharing windows-x86 
)
# Problematic frame:
# C  [libhighgui200.dll+0xd13e0]

Original issue reported on code.google.com by brito.ju...@gmail.com on 24 Aug 2010 at 6:02

GoogleCodeExporter commented 9 years ago
Since you are running a 32-bit x86 implementation of Java, have you tried to 
recompile OpenCV without SSE instructions as indicated in the README.txt file?

Original comment by samuel.a...@gmail.com on 25 Aug 2010 at 12:44

GoogleCodeExporter commented 9 years ago
Closing this long-standing issue, assuming that recompiling OpenCV without SSE 
instructions did the trick. Please reopen the issue if that is not the case, 
thank you.

Original comment by samuel.a...@gmail.com on 4 Nov 2010 at 10:35

GoogleCodeExporter commented 9 years ago
Hi I am trying to use JavaCv to detect faces and then wanted to store those 
faces in jpg format. I got success in face detection using readme file with 
javacv. but while saving I faced problems. Following is the code ... I tried to 
use cvSave but it do not store it in correct format.Please guide where i am 
wrong . Thank you in advance

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package facedetect;

/**
 *
 * @author User
 */
import com.googlecode.javacpp.Loader;
import com.googlecode.javacv.*;
import com.googlecode.javacv.cpp.*;
import java.awt.Image;
import java.nio.Buffer;
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_calib3d.*;
import static com.googlecode.javacv.cpp.opencv_objdetect.*;

public class Demo {
      public Buffer buf = null;
    public static void main(String[] args) throws Exception {
        String classifierName = "C:\\haarclass\\haarcascade_frontalface_alt.xml";

        // Preload the opencv_objdetect module to work around a known bug.
        Loader.load(opencv_objdetect.class);

        CvHaarClassifierCascade classifier = new CvHaarClassifierCascade(cvLoad("C:\\haarclass\\haarcascade_frontalface_alt.xml"));
        if (classifier.isNull()) {
            System.err.println("Error loading classifier file \"" + classifierName + "\".");
            System.exit(1);
        }
        CanvasFrame frame = new CanvasFrame("Face Detection");

        FrameGrabber grabber = new OpenCVFrameGrabber(0);
        grabber.start();
        IplImage grabbedImage = grabber.grab();

        int width  = grabbedImage.width();
        int height = grabbedImage.height();
        IplImage grayImage    = IplImage.create(width, height, IPL_DEPTH_8U, 1);

        CvMemStorage storage = CvMemStorage.create();

        CvPoint hatPoints = new CvPoint(3);
int counter=0;
     while (frame.isVisible() && (grabbedImage = grabber.grab()) != null && counter==0)
     {

            cvCvtColor(grabbedImage, grayImage, CV_BGR2GRAY);
            CvSeq faces = cvHaarDetectObjects(grayImage, classifier, storage,
                1.1, 3, CV_HAAR_DO_CANNY_PRUNING);
            int total = faces.total();
            for (int i = 0; i < total; i++)
            {
                CvRect r = new CvRect(cvGetSeqElem(faces, i));
                int x = r.x(), y = r.y(), w = r.width(), h = r.height();
                cvRectangle(grabbedImage, cvPoint(x, y), cvPoint(x+w, y+h), CvScalar.RED, 1, CV_AA, 0);
                cvRectangle(grabbedImage, cvPoint(x, y), cvPoint(x+w, y+h), CvScalar.BLUE, 1, CV_AA, 0);
                    // To access the elements of a native array, use the `position()` method
                hatPoints.position(0).x(x-w/10);    hatPoints.y(y-h/10);
                hatPoints.position(1).x(x+w*11/10); hatPoints.y(y-h/10);
                hatPoints.position(2).x(x+w/2);     hatPoints.y(y-h/2);
                cvFillConvexPoly(grabbedImage, hatPoints.position(0), 3, CvScalar.GREEN, CV_AA, 0);

            }
           //cvSave("D:\\img1.bmp", grabbedImage);
           // cvSaveImage("D:\\PhotoGallery.jpg", grabbedImage);
            counter=1;
            cvThreshold(grayImage, grayImage, 64, 255, CV_THRESH_BINARY);

            frame.showImage(grabbedImage);

            cvClearMemStorage(storage);
        }

        grabber.stop();
        frame.dispose();
    }
}

Original comment by gauravsa...@gmail.com on 15 Mar 2011 at 5:07