海康威视采集卡结合opencv使用(两种方法)

来源:互联网 发布:java面试简历项目流程 编辑:程序博客网 时间:2024/05/18 01:50

(注:第一种方法是我的原创 ^_^。 第二种方法是从网上学习的。)

 

 

第一种方法:利用 板卡的API:  GetJpegImage 得到 Jpeg 格式的图像数据,然后用opencv里的一个函数进行解码,得到IplImage对象。(我很郁闷海康威视采集卡为什么不直接提供RGB图像数据,而是提供了一个Jpeg数据给用户。)

 

libjpeg库就是专门处理 jpeg 格式的图像数据的,包括解码缩jpeg 格式的图像等。

 

opencv的库依赖于libjpeg库。我看了libjpeg库的源代码,然后又看了opencv 里 cvLoadImage这部分的源代码,发现opencv已经封装好了一个图像解码器: cvImageDecoder.

 

而且opencv的API 还提供了一个解码 内存中的图像数据的函数:

 

CVAPI(IplImage*) cvDecodeImage( const CvMat* buf, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));

 

先生成CvMat*,然后直接调用 cvDecodeImage 即可,以下是部分源代码:

 

 

 第一种方法运行起来有点慢,可能是解压图片数据要耗时间罢。

 

 

 第二种方法:从yuv422得到灰度图像,然后生成IplImage对象。

 

采集卡输出的是 原始yuv422格式图像

 

以下程序仅可以 实现 灰度图像(只提取了Y分量)的输出。

 

如果想得到彩色图像,还需要把  yuv422格式图像 转成 RGB格式的

 

 

 

以下是一段 简单的 视频卡驱动 和 用openCV显示图像的代码

 

关键之处在