Ich habe ein Array von RGB-Werten von ImageMagick und ich möchte eine IplImage-Struktur in opencv erstellen. Ich frage mich, wie kann ich den Inhalt der IplImage als rgb-Array-Werte festlegen, ohne das ImageMagick-Bild auf die Festplatte zu schreiben und dann erneut zu lesen.OpenCv Bild von RGB-Array
1
A
Antwort
1
Sie also ein ImageMagick Image-Objekt in ein IplImage konvertieren möchten. Es ist nur eine Frage des Schreibens in einen Puffer und dann Erstellen eines IplImage aus diesem Puffer. Der Code von hier (http://www.imagemagick.org/discourse-server/viewtopic.php?f=23 & t = 18183):
void Magick2Ipl(Image magicImage, IplImage* cvImage)
{
int width= magicImage.size().width();
int height = magicImage.size().height();
byte* blob= new byte[cvImage->imageSize];
magicImage.write(0,0, width, height, "BGRA", MagickCore::CharPixel, blob);
memcpy(cvImage->imageData, blob, cvImage->imageSize);
delete [] blob;
}
Mit freundlichen Grüßen, Daniel
0
Sie können es auf diese Weise auch tun,
Image image("Image_Path"); int width = image.size().width(); int height = image.size().height(); IplImage* mat = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3); image.write(0, 0, width, height, "BGR", Magick::CharPixel, (char*)mat->imageData); cvShowImage("image", mat);