2009年4月10日星期五

关于CvvImage的CopyOf()函数的问题

今天发现了一个问题,结果被证实貌似是OpenCV的bug。
CvvImage cimg;
cimg.CopyOf(img);
其中img肯定是个 单通道的IplImage图像,cimg.CopyOf(img);出错。
把img改成一个3通道的图像就没有问题了,是不是CopyOf只能拷3单通道的?

我没有办法,又必须用CvvImage ,我用如下笨方法,结果是可以的
CvvImage cimg;
cimg.Create(img->width,img->height,8);
IplImage* timg = cimg.GetImage();
timg->imageData = img->imageData;//img为单通道

我在论坛上发帖求助我又尝试搜了一下,看又有其他人遇到此问题
结果果然有哥们比我先遇到了,呵呵。
另外如果有用到
CvvImage 的CopyOf()函数;而调试出错,估计都是这个问题。请注意!

注: CvvImage 的CopyOf()函数常用于在控件 ID上显示图片。
转一段代码
void CTestDlg::DrawPicToHDC(IplImage *img, UINT ID)
{
CDC *pDC = GetDlgItem(ID)->GetDC();
HDC hDC= pDC->GetSafeHdc();
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);
CvvImage cimg;
cimg.CopyOf(img);
cimg.DrawToHDC(hDC,&rect);
ReleaseDC(pDC);
}


没有评论:

发表评论

欢迎访问、交流!对本博客有何建议,请
来信告知!
本博内容来源于网络,如有不当或侵犯权益,请来信告知,将及时撤除!
如引用博客内容、论文,请注明原作者!

Google一下本博客