Golden_phoenix
Golden_phoenix

Reputation: 91

how to convert from a two dimensional array to a graylevel image in opencv?

I am using openCV in my c++ image processing project.

I have this two dimensional array I[800][600] filled with values between 0 and 255, and i want to put this array in a graylevel "IplImage" so i can view it and process it using openCV functions.

Any help will be appreciated.

Thanks in advance.

Upvotes: 1

Views: 4680

Answers (2)

XYZ
XYZ

Reputation: 51

It's easy in Opencv C++ interface, all you need to do is to init a matrice, see the line below

cv::Mat img = cv::Mat(800, 600, CV_8UC1, I) // I[800][600]

Now you can do whatever you want, Opencv treats img as an 8-bit grayscale image.

Upvotes: 3

eqzx
eqzx

Reputation: 5559

CvSize image_size;
image_size.height = 800;
image_size.width = 600;
int channels = 1;
IplImage *image = cvCreateImageHeader(image_size, IPL_DEPTH_8U, channels);
cvSetData(image, I, image->widthStep)

this is untested, but the most important thing likely to require fixing is the second parameter to cvSetData(). This needs to be a pointer to unsigned character data, and if you're just using a 2D array that isn't part of a Mat, then you'll have to do something a bit different, (possibly a loop? although you should avoid loops in openCV as much as possible).

see this post for a highly relevant question

Upvotes: 0

Related Questions