opencv中的Corrupt JPEG data怎么解决?

「已注销」 2010-07-22 05:27:55
我的软件环境是Ubuntu 10.04,opencv2.0.0
源代码:
#include<stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include<time.h>
#include<stdlib.h>
#include<cv.h>
#include<cxcore.h>
#include<highgui.h>
int main( int argc,char ** argv )
{
//声明IplImage指针
IplImage* pFrame=NULL;
IplImage* pSaveFrame=NULL;
CvCapture* pCapture=NULL;
static char filename[40];
struct tm * tm_ptr;
time_t the_time;


//创建窗口
cvNamedWindow("video",CV_WINDOW_AUTOSIZE);
pCapture=cvCaptureFromCAM(-1);


//打开摄像头
if( !pCapture )
{
fprintf(stderr,"Can not open camera.\n");
return -1;
}

if(mkdir("./Robert",0755)==-1)
{
//创建时存在该目录会返回错误码,如不存在则创建它,但由于我们需要该目录,则出错也不处理
}

//逐帧读取视频
while(pFrame=cvQueryFrame(pCapture))
{
cvShowImage("video",pFrame);
if(cvWaitKey(10)>=0) break; //显示视频,若参数为0,只显示第一帧 如果你敲了键盘,就退出程序,否则继续捕获下一帧

//cvWaitKey(0); 显示图像
pSaveFrame=cvCreateImage(cvSize(pFrame->width,pFrame->height),pFrame->depth,pFrame->nChannels);
//get file name
(void) time(&the_time);
tm_ptr=localtime(&the_time);
snprintf(filename, 40, "./Robert/%04d%02d%02d%02d%02d%02d.bmp",tm_ptr->tm_year-100+2000, tm_ptr->tm_mon + 1, tm_ptr->tm_mday, tm_ptr->tm_hour,tm_ptr->tm_min, tm_ptr->tm_sec);
cvResize(pFrame,pSaveFrame,CV_INTER_LINEAR); //为了让所有输入图像同样大小,需要对图像进行缩放.CV_INTER_LINEAR双线性插值

cvSaveImage(filename,pSaveFrame);

//cvReleaseImage( &pFrame );
cvReleaseImage(&pSaveFrame);
}
cvDestroyWindow("video");
cvReleaseCapture(&pCapture);
printf("process ok!\n");
return 0;


}

编译没问题。
但运行时,老出现Corrupt JPEG data: premature end of data segment。
望牛人解答。。。。。
翘首等待。。。。。。。。。。。。。
...全文
3603 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
(1)pCapture=cvCaptureFromCAM(0)

(2)sprintf(filename,
"..\Robert\%04d%02d%02d%02d%02d%02d.bmp",
tm_ptr->tm_year-100+2000, tm_ptr->tm_mon + 1,
tm_ptr->tm_mday, tm_ptr->tm_hour,tm_ptr->tm_min, tm_ptr->tm_sec);

是‘\’不是‘/’
再试试 应该可以 祝成功
diffman 2012-05-07
  • 打赏
  • 举报
回复
同求解决方法呀~
weiwei92588 2012-03-05
  • 打赏
  • 举报
回复
我也出现这个问题,你们解决了么?
怎么弄的啊?
huangbocai 2010-11-29
  • 打赏
  • 举报
回复
你好,我用的是普通的usb摄像头(30万像素),也出现这个问题,请高手指教!
「已注销」 2010-07-23
  • 打赏
  • 举报
回复
为什么没人帮我看下呢
曹大夯 2010-07-23
  • 打赏
  • 举报
回复
像是摄像头的MJPG数据没有上来完整。
1. 拿别的工具比如Cheese来看MJPG视频是否没有问题?
2. 有可能是你的应用程序处理显示视频不够及时,造成视频通路堵塞。

请介绍一下你使用的摄像头。

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧