网络摄像机获取的IPLIMAGE类型的图片保存到文件夹里面

时间:2022-03-08 21:35:57
void CMFCRemoteDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
VSNET_ClientShowcallback(m_hHandle, ShowCallBack1, NULL);
leftPic = CMFCRemoteDlg::tempImg;
if (nIDEvent == 1)
{
if (leftPic != NULL)
{
CDC* pDC1 = m_video.GetDC();
HDC pHdc1 = pDC1->GetSafeHdc();
CRect rect1;
rect1.right = 640;
rect1.bottom = 480;

cvvleftPic.CopyOf(leftPic);
cvvleftPic.DrawToHDC(pHdc1, &rect1);
ReleaseDC(pDC1);
cvReleaseImage(&CMFCRemoteDlg::tempImg);

}

}
if (nIDEvent == 2)
{
cvShowImage("test", leftPic);
}
if (nIDEvent == 3)
{

char * cou = _itoa(count, temp, 10);
char * m = "E://VS//PICTURE//";
char * c=strcat(m, cou);
    char * p = ".jpg";
char * filename = strcat(c, p);
cvSaveImage(filename, leftPic);
count++;
}


CDialogEx::OnTimer(nIDEvent);
}

一个按钮的单击事件
void CMFCRemoteDlg::OnClickedButtonRes()
{
// TODO: Add your control notification handler code here
SetTimer(3, 1000, NULL);
}
单击这一按钮后程序直接停止工作,不知道是什么原因,上面nIDEvent == 3里的代码有什么问题吗?
想实现定时让一秒存一张从服务器那边传来的图像到文件夹里面,传过来的都在leftPic变量里面,是IPLIMAGE类型的,
哪位好心人可以帮忙解答一下?不胜感激。

4 个解决方案

#1


char * c=strcat(m, cou);
m的内存是在程序数据区,是不可以改写的,另外,你这样操作也不对,因为内存数量不足

#2


那请问应该怎么写,可以给指导一下吗?谢谢啦~~~,我真的没有思路呀~~~

#3


if (nIDEvent == 3)
{
char * cou = (char *)malloc(sizeof(char) + 1);
cou = _itoa(count, temp, 10);
char * m = "E://VS//PICTURE//";

char* c = (char*)malloc(strlen(m) + strlen(cou) + 1);
strcpy(c, m);
strcat(c, cou );
    char * p = ".jpg";
char * filename = (char *)malloc(strlen(c) + strlen(p) + 1);
strcpy(filename, c);
strcat(filename, p);
cvSaveImage(filename, leftPic);
count++;
}
改成这样写了,可是为什么还是不可以,也是程序直接停止工作。。。。

#4


好了,谢谢您~~~

#1


char * c=strcat(m, cou);
m的内存是在程序数据区,是不可以改写的,另外,你这样操作也不对,因为内存数量不足

#2


那请问应该怎么写,可以给指导一下吗?谢谢啦~~~,我真的没有思路呀~~~

#3


if (nIDEvent == 3)
{
char * cou = (char *)malloc(sizeof(char) + 1);
cou = _itoa(count, temp, 10);
char * m = "E://VS//PICTURE//";

char* c = (char*)malloc(strlen(m) + strlen(cou) + 1);
strcpy(c, m);
strcat(c, cou );
    char * p = ".jpg";
char * filename = (char *)malloc(strlen(c) + strlen(p) + 1);
strcpy(filename, c);
strcat(filename, p);
cvSaveImage(filename, leftPic);
count++;
}
改成这样写了,可是为什么还是不可以,也是程序直接停止工作。。。。

#4


好了,谢谢您~~~