C++ 为什么cvCopy不会';我不能复制我的全部图像数据吗?

C++ 为什么cvCopy不会';我不能复制我的全部图像数据吗?,c++,opencv,C++,Opencv,我在opencv项目中遇到一个问题,cvCopy函数没有正常行为!所以我写了这段代码来测试它 int n = 6; IplImage* img = cvCreateImage( cvSize(n,n) ,1 ,1 ); uchar* ptr = (uchar*)(img->imageData); for(int i = 0 ; i< n*n ; i++) { ptr[i] = i+1; } std::cout << "befor copy" <<

我在opencv项目中遇到一个问题,cvCopy函数没有正常行为!所以我写了这段代码来测试它

int n = 6;
IplImage* img = cvCreateImage( cvSize(n,n) ,1 ,1 );
uchar* ptr = (uchar*)(img->imageData);

for(int i = 0 ; i< n*n ; i++)
{
    ptr[i] = i+1;
}

std::cout << "befor copy" << std::endl;
for( int i =0 ; i < n*n ;i++)   //print the imageData of img
{
    if ( i % n == 0 )
        std::cout<<std::endl;
    std::cout << std::setw(4) <<(int) ptr[i];
}

IplImage* img2 = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
cvCopy(img,img2);

ptr = (uchar*)(img2->imageData);
std::cout << "\nafter copy" << std::endl;
for( int i =0 ; i < n*n ;i++)    //print the imageData of img2
{
    if ( i % n == 0 )
        std::cout<<std::endl;
    std::cout << std::setw(4) <<(int) ptr[i];
}
std::cout<<std::endl;
所以,它只是复制到数字26;不是所有的图像数据
为什么cvCopy的行为是这样的?问题在于:

IplImage* img = cvCreateImage( cvSize(n,n) ,1 ,1 );
您已将深度设置为
1
,但它应该类似于IPL_depth_8U。 这里depth=1并不意味着1字节,它是以位为单位的深度。你最好使用其中一种。例如

问题在于:

IplImage* img = cvCreateImage( cvSize(n,n) ,1 ,1 );
您已将深度设置为
1
,但它应该类似于IPL_depth_8U。 这里depth=1并不意味着1字节,它是以位为单位的深度。你最好使用其中一种。例如


这也是深度=8,这也是深度=8
IplImage* img = cvCreateImage(cvSize(n, n), IPL_DEPTH_8U, 1);