Re: [javacv] Converting image to grayscale using cvCvtColor is giving an error

2,557 views
Skip to first unread message

Samuel Audet

unread,
Mar 31, 2013, 7:31:39 AM3/31/13
to jav...@googlegroups.com
On 03/30/2013 01:24 AM, Bhaarat Sharma wrote:
> What am I doing wrong?

`new CvMat()` doesn't allocate memory for the buffer.. This is based on
the old C API. Use cvCreateImage() or the create() factory method as
shown in the README.txt file.

Alankar dasare

unread,
Mar 22, 2014, 6:51:10 AM3/22/14
to jav...@googlegroups.com
        String fileName = "nandu.jpg";
        IplImage img=cvLoadImage(fileName);
        CvSize cvSize = cvSize(img.width(), img.height());
        IplImage gry=cvCreateImage(cvSize, img.depth(), 1);
        cvCvtColor(img, gry, CV_BGR2GRAY);
        cvShowImage("gray image",gry);
        cvSaveImage("kumar.jpg", gry);
        cvWaitKey(0);

Samuel Audet

unread,
Mar 23, 2014, 9:55:12 AM3/23/14
to jav...@googlegroups.com
So, what is the error that you are getting?

melo

unread,
May 28, 2014, 1:03:35 AM5/28/14
to jav...@googlegroups.com


Hi Samuel,

I have to convert some part of a C code in Java code, so I use Javacv libraries.However, I don't succed in convert somme parts. For example,

 cvCvtColor( image, grey, CV_BGR2GRAY );
=> cvCvtColor cannot be resolved

image = cvCreateImage( cvGetSize(frame), 8, 3 );   
=>cvGetSize cannot be resolved

I try to change this
frame = cvCreateImage( cvSize(leftImage->width,leftImage->height), leftImage->depth, leftImage->nChannels);
into this
frame = cvCreateImage( cvSize(leftImage.width(),leftImage.height()), leftImage.depth(), leftImage.nChannels());
but cvSize cannot be resolved...

And I don't know if I can convert this
 image->origin = frame->origin; 
in java?

Thank you in advance for your help
Melo

Samuel Audet

unread,
May 28, 2014, 7:55:45 AM5/28/14
to jav...@googlegroups.com
Hello,

On 05/28/2014 02:03 PM, melo wrote:
> I have to convert some part of a C code in Java code, so I use Javacv
> libraries.However, I don't succed in convert somme parts. For example,
>
> cvCvtColor( image, grey, CV_BGR2GRAY );
> => cvCvtColor cannot be resolved
>
> image = cvCreateImage( cvGetSize(frame), 8, 3 );
> =>cvGetSize cannot be resolved
>
> I try to change this
> frame = cvCreateImage( cvSize(leftImage->width,leftImage->height), leftImage->depth, leftImage->nChannels);
> into this
> frame = cvCreateImage( cvSize(leftImage.width(),leftImage.height()), leftImage.depth(), leftImage.nChannels());
> but cvSize cannot be resolved...

It's all there, just make sure to import static everything from
opencv_core and opencv_imgproc as shown in the README file.

> And I don't know if I can convert this
> image->origin = frame->origin;
> in java?

Sure, that would be
image.origin(frame.origin());

Samuel

melo

unread,
May 28, 2014, 7:38:14 PM5/28/14
to jav...@googlegroups.com

Hi!
thank you for your answer.

However for this 
frame = cvCreateImage( cvSize(leftImage.width(),leftImage.height()), leftImage.depth(), leftImage.nChannels());
I don't really understand....

In fact I think when i write cvSize , it doesn't like because leftImage is an IplImage from import org.bytedeco.javacpp.opencv_core.IplImage; , I don't know , but I've imported all opencv_core and opencv_imgproc . So i don't know why it doesn't work (I suppose that arguments inside parentheses are wrong)....

My other problem is , Do you know how I convert a * in java, I'm not sure but I think in java a "pointer * " doesn't exist...

Thank you
Melo

Samuel Audet

unread,
May 31, 2014, 12:30:59 AM5/31/14
to jav...@googlegroups.com
Hi,

On 05/29/2014 08:38 AM, melo wrote:
> However for this
> frame = cvCreateImage( cvSize(leftImage.width(),leftImage.height()), depth(), leftImage.nChannels());
> I don't really understand....
>
> In fact I think when i write cvSize , it doesn't like because leftImage
> is an IplImage from import org.bytedeco.javacpp.opencv_core.IplImage; ,
> I don't know , but I've imported all opencv_core and opencv_imgproc . So
> i don't know why it doesn't work (I suppose that arguments inside
> parentheses are wrong)....

We can do `import static org.bytedeco.javacpp.opencv_core.*` as shown in
the README.md file, and that should do what you want.

Try to run the Demo file from the README.md file, it works right? So do
something similar.

> My other problem is , Do you know how I convert a * in java, I'm not
> sure but I think in java a "pointer * " doesn't exist...

It's mapped to `org.bytedeco.javacpp.Pointer` and we can usually just
remove it. :)

Samuel

Reply all
Reply to author
Forward
0 new messages