YV12 转换为 灰度图像 ,利用opencv进行二次开发
2013-07-22 11:40
876 查看
OpenCV能处理bmp格式位图,也可以直接处理单通道的灰度图的;你从海康采集卡获得YV12的彩色图象,
直接提取Y分量就成了
灰度图。然后在OpenCV中创建单通道的I plI mage格式的图象,就可以进行处理了:
流程及部分关键代码:
1.获得海康板卡的原始码流YV12(彩色的),能得到图象的宽度W,高度h,以及大小Siz e,图象数据指针
pBuffer;
2.从原始的YV12数据帧提取Y(灰度)分量(做图象的分析一般是先将图象灰度化,以减少计算量)
int nYSiz e=w *h; //灰度图象的大小==YV12中Y分量长度.
char *pYData =new char [nYSiz e];
memcpy(pYData,pBuffer,nYSiz e); //pYData就是一帧灰度图;这句以及上一句可以省略,为了你能看的
更清楚点。
3.创建单通道的I plI mage的图象
I plI mage *pI plI mage=cvCreateI mage(cvSiz e(nWidth,nH eight),I PL_DEPTH _8U ,1); //创建但通道的位深为
8位的I plI mage格式的图象
if(pI plI mage)
{
memcpy(pI plI mg->imageData,pYData,nYSiz e);
}
4.构造了一个I plI mage格式的图象后,你就能做你想做的事情了
直接提取Y分量就成了
灰度图。然后在OpenCV中创建单通道的I plI mage格式的图象,就可以进行处理了:
流程及部分关键代码:
1.获得海康板卡的原始码流YV12(彩色的),能得到图象的宽度W,高度h,以及大小Siz e,图象数据指针
pBuffer;
2.从原始的YV12数据帧提取Y(灰度)分量(做图象的分析一般是先将图象灰度化,以减少计算量)
int nYSiz e=w *h; //灰度图象的大小==YV12中Y分量长度.
char *pYData =new char [nYSiz e];
memcpy(pYData,pBuffer,nYSiz e); //pYData就是一帧灰度图;这句以及上一句可以省略,为了你能看的
更清楚点。
3.创建单通道的I plI mage的图象
I plI mage *pI plI mage=cvCreateI mage(cvSiz e(nWidth,nH eight),I PL_DEPTH _8U ,1); //创建但通道的位深为
8位的I plI mage格式的图象
if(pI plI mage)
{
memcpy(pI plI mg->imageData,pYData,nYSiz e);
}
4.构造了一个I plI mage格式的图象后,你就能做你想做的事情了
相关文章推荐
- 利用最大熵进行阈值分割从而实现灰度图像的二值化的原理概要及OpenCV代码
- python3-opencv库(3)--图片颜色空间转换,利用HSV进行物体跟踪,图像通道分离与合并
- 利用Opencv进行图像灰度变换处理
- 在Android平台上利用opencv进行图像处理之边缘检测、灰度变换、缩小
- javaCV图像处理之Frame、Mat和IplImage三者相互转换(使用openCV进行Mat和IplImage转换)
- opencv学习(一)实现将彩色图像转换成灰度图像和二值图像
- 【Android】Android Studio 2上利用NDK进行OpenCV 3.1开发
- 利用C#进行AUTOCAD的二次开发
- 利用C#进行AutoCAD的二次开发(一)by C#才鸟
- 利用golang进行OpenCV学习和开发的步骤
- 七、Sketchup用ruby进行二次开发--利用Transformation实现Move工具(平移、旋转和缩放)
- OpenCV 读RGB图像然后转换成灰度并保存成灰度图
- 利用数组操作实现灰度图像放大两倍(C++&opencv)
- Android平台上利用opencv进行图像的边沿检测
- 利用C#进行AutoCAD的二次开发(转)
- 利用OPENCV为android相机开发图像处理库
- 利用opencv以及pcl将2D深度图图像转换为3D点云
- C++ OpenCV 实现RGB彩色图像转化成灰度图像再转换成二值图像
- 利用OpenCV进行【视频的读取】与【保存视频文件或者图像】源码!~
- unity项目(利用easyAR开发的AR应用)导入Androidstudio进行二次开发