关于OpenCV中CvvImage::Copyof()函数的问题
OpenCV中CvvImage::Copyof()函数中HG_IS_IMAGE是什么意思?现在我想把一个彩色的IplImage图像在Picture控件中显示,可是得不到结...
OpenCV中CvvImage::Copyof()函数中HG_IS_IMAGE是什么意思?现在我想把一个彩色的IplImage图像在Picture控件中显示,可是得不到结果,显示的全部是黑色。程序链接时提示:Copyof函数的参数列表有错误。改了很长时间了,一直没有成功,分数不多,希望大家指点!
注:换了一种方法,用cvShowImage在另外一个窗口能够正确显示。
我的代码如下:
IplImage *m_DstImg;
CvSize m_size;
int m_size.width = 1624;
int m_size.height = 1234;
m_DstImg =cvCreateImage(m_size,IPL_DEPTH_32F,4);
memcpy(m_DstImg->imageData,outBuf,payloadSize*4); //outBuf里存的是彩图
//outBuf和payloadSize已经得到
CDC *pDC = GetDlgItem(IDC_PIC1)->GetDC();
CRect rect;
GetDlgItem(IDC_PIC1)->GetClientRect(&rect);
HDC hDC= pDC->GetSafeHdc();
CvvImage cimg;
cimg.Copyof(m_DstImg,3);
cimg.DrawToHDC(hDC,&rect);
ReleaseDC(pDC);
cvReleaseImage(&m_DstImg); 展开
注:换了一种方法,用cvShowImage在另外一个窗口能够正确显示。
我的代码如下:
IplImage *m_DstImg;
CvSize m_size;
int m_size.width = 1624;
int m_size.height = 1234;
m_DstImg =cvCreateImage(m_size,IPL_DEPTH_32F,4);
memcpy(m_DstImg->imageData,outBuf,payloadSize*4); //outBuf里存的是彩图
//outBuf和payloadSize已经得到
CDC *pDC = GetDlgItem(IDC_PIC1)->GetDC();
CRect rect;
GetDlgItem(IDC_PIC1)->GetClientRect(&rect);
HDC hDC= pDC->GetSafeHdc();
CvvImage cimg;
cimg.Copyof(m_DstImg,3);
cimg.DrawToHDC(hDC,&rect);
ReleaseDC(pDC);
cvReleaseImage(&m_DstImg); 展开
展开全部
HG_IS_IMAGE 是个宏定义
#define HG_IS_IMAGE(img) \
((img) != 0 && ((const IplImage*)(img))->nSize == sizeof(IplImage) && \
((IplImage*)img)->imageData != 0)
你定义的图像是4通道图像 cvCreateImage(m_size,IPL_DEPTH_32F,4);
cimg.Copyof(m_DstImg,3); 最后一个参数是通道数,你把他改成m_DstImg->nChannels
然后试试
#define HG_IS_IMAGE(img) \
((img) != 0 && ((const IplImage*)(img))->nSize == sizeof(IplImage) && \
((IplImage*)img)->imageData != 0)
你定义的图像是4通道图像 cvCreateImage(m_size,IPL_DEPTH_32F,4);
cimg.Copyof(m_DstImg,3); 最后一个参数是通道数,你把他改成m_DstImg->nChannels
然后试试
追问
还是不行啊,不管改为几通道的图像,都得不到结果,现在链接时会报错,是不是图像大小的原因?m_DstImg是1624*1234(像素),outBuf里面存的是1624*1234*4字节大小的图像,不过m_DstImg是彩图的话一个像素4个字节也应该没有问题啊?请求指教啊!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询