
急求一个【视频文本检测】的c++程序,主要功能是定位字幕区域,最好有一些代码说明 160
如题,程序的主要功能是:实现从视频帧中定位并截取字幕区域(只需要字幕部分就够了,场景中的文字不用识别。)本人现在只是大致明白从图片中定位字幕区域的理论方法,但程序方面就无...
如题,程序的主要功能是:实现从视频帧中定位并截取字幕区域(只需要字幕部分就够了,场景中的文字不用识别。)
本人现在只是大致明白从图片中定位字幕区域的理论方法,但程序方面就无从下手了。
程序最好不要太多文件过于复杂的,能力有限怕我最后理解不了讲不清楚。当然如果有比较详细的代码说明文件是最好不过的了。
现在还有一个疑问就是,如果只是实现【图片】文本检测的话我能大致理解方法,但是【视频】文本检测的话,是不是就要用到额外的类似镜头分割的东西了?
程序的话如果实现不了【视频】文本检测的话,就先实现【图片】文本检测也可以接受。
谢过各路大神!~ 展开
本人现在只是大致明白从图片中定位字幕区域的理论方法,但程序方面就无从下手了。
程序最好不要太多文件过于复杂的,能力有限怕我最后理解不了讲不清楚。当然如果有比较详细的代码说明文件是最好不过的了。
现在还有一个疑问就是,如果只是实现【图片】文本检测的话我能大致理解方法,但是【视频】文本检测的话,是不是就要用到额外的类似镜头分割的东西了?
程序的话如果实现不了【视频】文本检测的话,就先实现【图片】文本检测也可以接受。
谢过各路大神!~ 展开
3个回答
展开全部
图像二值化,根据字幕颜色划分阈值。其实openCV里面已经包含了视频处理的方法,理论上也是逐帧处理。每帧进行二值化后得到字幕的区域。通常如果采用颜色空间进行图像识别的话最好把原图转换为HSV颜色空间,根据H和S的更容易扣出想要的颜色区域,更何况是字幕这种一定会是某类单一颜色的情况。
openCV的视频读取方法大概如下:
IplImage* pImg = NULL;
CvMat* pFrame = NULL;
CvCapture* pCapture = NULL;
if( !(pCapture = cvCaptureFromFile(argv[1])))
{
cerr << "Can not open video file " << argv[1] << endl;;
return -2;
}
while(pFrame = cvQueryFrame(pCapture))
{
nFrmNum++;
if(nFrmNum == 1)
{
pImg = cvCreateImage(cvSize(pFrame->width, pFrame->height),
IPL_DEPTH_8U,1);
pFrame = cvCreateMat(pImg->height, pImg->width, CV_32FC1);
cvCvtColor(pFrame, pImg, ...);
}
else
{
//todo ...
}
}
如果要做文字识别就要用模式识别的方法了,不过这个需要大量训练样本才能做。
openCV的视频读取方法大概如下:
IplImage* pImg = NULL;
CvMat* pFrame = NULL;
CvCapture* pCapture = NULL;
if( !(pCapture = cvCaptureFromFile(argv[1])))
{
cerr << "Can not open video file " << argv[1] << endl;;
return -2;
}
while(pFrame = cvQueryFrame(pCapture))
{
nFrmNum++;
if(nFrmNum == 1)
{
pImg = cvCreateImage(cvSize(pFrame->width, pFrame->height),
IPL_DEPTH_8U,1);
pFrame = cvCreateMat(pImg->height, pImg->width, CV_32FC1);
cvCvtColor(pFrame, pImg, ...);
}
else
{
//todo ...
}
}
如果要做文字识别就要用模式识别的方法了,不过这个需要大量训练样本才能做。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询