注册 登录
编程论坛 VC++/MFC

opencv彩色图像转灰度为什么不能显示啊

froson 发布于 2010-12-05 00:14, 1433 次点击
我写的彩色图像转灰度图像的程序为什么新建的窗口显示没问题但是在指定的控件中显示却会出错啊,请高人指点啊!
m_TheImage是我打开的彩色图像
建立的是MFC基本对话框窗口
void DrawPicToHDC(IplImage *img, UINT ID)//显示图片的部分
{
HWND HDialog=FindWindow(NULL, "pic2");
HDC hdc;
hdc=GetDC(GetDlgItem(HDialog,ID));//该函数检索指定的对话框中的控制句柄
CRect rect;
GetClientRect(GetDlgItem(HDialog,ID),&rect);// 该函数获取窗口客户区的坐标,[输出]是一个指针,指向一个RECT类型的rectangle结构
CvvImage cimg;
cimg.CopyOf(img);
cimg.DrawToHDC(hdc,&rect);
ReleaseDC(GetDlgItem(HDialog,ID),hdc);

}
void CPic2Dlg::OnButton2()  
{
IplImage *src=0 ;
IplImage* dst1 = cvCreateImage(cvGetSize(m_TheImage),IPL_DEPTH_8U,1);


cvCvtColor(m_TheImage,dst1,CV_BGR2GRAY);  

 cvNamedWindow("src", 0); //创建图像显示窗口
cvShowImage("src", dst1); //显示图像
 cvSaveImage("reason.bmp",dst1);
 }
这样可以显示,但是换成这个就不行了为什么啊:
void CPic2Dlg::OnButton2()  
{
IplImage *src=0 ;
IplImage* dst1 = cvCreateImage(cvGetSize(m_TheImage),IPL_DEPTH_8U,1);


cvCvtColor(m_TheImage,dst1,CV_BGR2GRAY);  
DrawPicToHDC(dst1, IDC_STATIC);//这一句总是不认啊,郁闷了,而且错误也没法调试
 cvSaveImage("reason.bmp",dst1);
 }
1 回复
#2
红色警戒2010-12-05 16:35
CopyOf(image, 1);这个函数拷贝灰度图像时不要用默认的参数,第二个参数用1试试看
1