Ask Your Question

Shikhar's profile - activity

2020-05-24 17:56:25 -0600 received badge  Famous Question (source)
2015-11-15 07:07:00 -0600 received badge  Notable Question (source)
2015-01-11 07:25:51 -0600 received badge  Popular Question (source)
2013-03-12 07:19:46 -0600 received badge  Student (source)
2013-03-11 16:47:26 -0600 received badge  Editor (source)
2013-03-11 16:46:19 -0600 asked a question *java* api Histogram calculation

Hi! I have been trying to write a function to compute the 3D histogram of a color image. i am very new to OpenCV. I am unable to get the result. I am getting the following error

OpenCV Error: Assertion failed (csz == 0 || csz == dims) in unknown function, file ..\..\..\src\opencv\modules\imgproc\src\histogram.cpp, line 1419
CvException [org.opencv.core.CvException: ..\..\..\src\opencv\modules\imgproc\src\histogram.cpp:1419: error: (-215) csz == 0 || csz == dims]
    at org.opencv.imgproc.Imgproc.calcHist_1(Native Method)
    at org.opencv.imgproc.Imgproc.calcHist(Imgproc.java:2775)
    at shikhar.logic.OpenCVTest.getColorHistogram(OpenCVTest.java:82)
    at shikhar.logic.OpenCVTest.compareImages(OpenCVTest.java:133)
    at shikhar.logic.OpenCVTest.main(OpenCVTest.java:30)
OpenCV Error: Assertion failed (csz == 0 || csz == dims) in unknown function, file ..\..\..\src\opencv\modules\imgproc\src\histogram.cpp, line 1419
CvException [org.opencv.core.CvException: ..\..\..\src\opencv\modules\imgproc\src\histogram.cpp:1419: error: (-215) csz == 0 || csz == dims]
    at org.opencv.imgproc.Imgproc.calcHist_1(Native Method)
    at org.opencv.imgproc.Imgproc.calcHist(Imgproc.java:2775)
    at shikhar.logic.OpenCVTest.getColorHistogram(OpenCVTest.java:82)
    at shikhar.logic.OpenCVTest.compareImages(OpenCVTest.java:134)
    at shikhar.logic.OpenCVTest.main(OpenCVTest.java:30)
java.lang.NullPointerException
    at org.opencv.imgproc.Imgproc.compareHist(Imgproc.java:2848)
    at shikhar.logic.OpenCVTest.compareImages(OpenCVTest.java:135)
    at shikhar.logic.OpenCVTest.main(OpenCVTest.java:30)
-1.0

the code I had written was

public static Mat getColorHistogram(String imgLocation)
{
    try
    {
        Mat img=new Mat();
        img=org.opencv.highgui.Highgui.imread(imgLocation);
        List<Mat> imagesList=new ArrayList<>();
        imagesList.add(img);
        //Mat tempChannel=new Mat(new Size(3,1),org.opencv.core.CvType.
        int histSizeArray[]={256,256,256};
        int channelArray[]={0,1,2};
        MatOfInt channels=new MatOfInt(channelArray);
        //mChannels = new MatOfInt[] { new MatOfInt(0), new MatOfInt(1), new MatOfInt(2) };
        Mat hist=new Mat();
        MatOfInt histSize=new MatOfInt(256);
        //histSize.fromArray(histSizeArray);
        //histSize = new MatOfInt(256);
        float hrangesArray[]={0.0f,255.0f};
        MatOfFloat ranges=new MatOfFloat(0.0f,255.0f);
        org.opencv.imgproc.Imgproc.calcHist(imagesList, channels,new Mat(), hist, histSize, ranges);
        return hist;
    }
    catch(Exception e)
    {
        e.printStackTrace();
        return null;
    }
}

Here the line 82 corresponds to the calcHist line