将Matrix类转换为IplImage *

时间:2013-03-14 14:19:10

标签: c++ visual-studio-2010 opencv

我有一类Matrix,我可以通过两个循环访问它,并在其中存储了我想要的所有值。

Matrix MatriceJ(width, height);
for (int i=0;i<width;i++)
{
    for (int j=0;j<height;j++)
    {
        MatriceJ.at(i,j)=....
    }
}

但是现在,我想将MatriceJ存储在IplImage *中,因为我可以将其不同的元素一个接一个地与其他IplImages相乘。

你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

这应该让你开始。我假设数据是unsigned char和一个通道,请相应调整。

// Create the image
int depth = IPL_DEPTH_8U; // please adjust
int channels = 1;         // please adjust
IplImage* img = cvCreateImage(cvSize(width,height), depth, channels);

// Now assume there is a matrix MatriceJ
// Copy the data to our newly created IplImage*
for (int i=0;i<height;i++)
{
    uchar* ptr = (uchar*)(img->imageData + i*img->widthStep);
    for (int j=0;j<width;j++)
    {
        ptr[j] = MatriceJ(i,j);
    }
}