RAW数据格式的图片转换--常用于相机开发和图片旋转
来源:互联网 发布:log4j打印sql语句 编辑:程序博客网 时间:2024/05/22 10:54
近日,开发多款相机,在作视频流处理时,常用的流数据转换方法有以下几个函数。以作共享,欢迎讨论。
#define GFP_OPERATORIMAGEDATA_TYPE_INVERSE1// 反像图像数据#define GFP_OPERATORIMAGEDATA_TYPE_HMIRROR2// 水平镜像图像数据#define GFP_OPERATORIMAGEDATA_TYPE_VMIRROR3// 垂直镜像图像数据#define GFP_OPERATORIMAGEDATA_TYPE_RU90IRROR4// 顺时针90度#define GFP_OPERATORIMAGEDATA_TYPE_LD90IRROR5// 逆时针90度int MyVideo_OperatorImageDataEx(UCHAR* pImageData, int nw, int nh, int nBitCnt, UCHAR fOprType){if(nBitCnt != 24)return 0;UCHAR *pTmpData, *pRowData, nSwap[3];int col, row, nMid, nrowLen, nOff;//if(nBitCnt == 8)//nrowLen = nw;//elsenrowLen = nw * 3;switch(fOprType){case GFP_OPERATORIMAGEDATA_TYPE_INVERSE:pTmpData = pImageData;for(row = 0; row < nh; row++){for(col = 0; col < nrowLen; col++, pTmpData++){*pTmpData = ~(*pTmpData);}}return 1;case GFP_OPERATORIMAGEDATA_TYPE_HMIRROR:nMid = nw >> 1;pTmpData = pImageData;for(row = 0; row < nh; row++, pTmpData += nrowLen){for(col = 0, nOff = 0; col < nMid; col++, nOff += 3){memcpy(nSwap, pTmpData + nOff, 3);memcpy(pTmpData + nOff, pTmpData + (nw - 1 - col) * 3, 3);memcpy(pTmpData + (nw - 1 - col) * 3, nSwap, 3);}}return 1;case GFP_OPERATORIMAGEDATA_TYPE_VMIRROR:nMid = nh >> 1;pRowData = (UCHAR*)malloc(sizeof(UCHAR) * nrowLen);if(NULL == pRowData)return 0;pTmpData = pImageData;for(row = 0; row < nMid; row++, pTmpData += nrowLen){memcpy(pRowData, pTmpData, nrowLen);memcpy(pTmpData, pImageData + (nh - 1 - row) * nrowLen, nrowLen);memcpy(pImageData + (nh - 1 - row) * nrowLen, pRowData, nrowLen);}free(pRowData);pRowData = NULL;return 1;case GFP_OPERATORIMAGEDATA_TYPE_RU90IRROR:{unsigned char* pData = (unsigned char*)malloc(3*nh*nw);memset(pData, 0, 3*nw*nh);int nLineLen = 3*nw;int nlineLen1 = 3*nh;//memcpy(pData, pImageData, 3*nh*nw);for(int i = 0; i < nh; i++) {for(int j = 0; j < nw; j++){memcpy(pData + j* nlineLen1 + (nh - i - 1)* 3, pImageData +i * nLineLen + j* 3, 3 );}}memcpy(pImageData, pData, 3*nh*nw);free(pData);pData = NULL;return 1;}case GFP_OPERATORIMAGEDATA_TYPE_LD90IRROR:{unsigned char* pData1 = (unsigned char*)malloc(3*nh*nw);memset(pData1, 0, 3*nw*nh);int nWLenth = 3*nw;int nHLenth = 3*nh;for( int i = 0; i < nh; i++ ){for(int j =0; j < nw; j++ ){//memcpy(pData1+(nh-1-j)*nWLenth + i*3, pImageData+i*nWLenth+j*3, 3);memcpy(pData1 + (nw-1-j)*nHLenth + i*3, pImageData + i*nWLenth + j*3, 3);}}memcpy(pImageData,pData1,3*nw*nh);free(pData1);pData1 = NULL;return 1;}}return 0;}
- RAW数据格式的图片转换--常用于相机开发和图片旋转
- Android 拍照后图片的旋转,合并,兼容性 相机开发
- 将图片转换成caffe的数据格式
- 将图片转换成caffe的数据格式
- 360旋转图片,常用于展示正在请求网络中
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- iOS开发技巧之:相机获取到的图片自动旋转90度解决办法
- 处理相机拍照后Bitmap和图片旋转问题
- iPhone上关于相机拍照的图片的旋转问题
- iOS 旋转图片 将相机拍摄的横屏图片旋转成竖屏
- 调用内置相机照片,部分手机图片旋转的解决方案
- KMP算法
- 1044. Shopping in Mars (25)
- “十天一本书”之25—《提问的智慧》感悟
- OSI七层-相关协议
- robot自己总结使用技巧(实用)
- RAW数据格式的图片转换--常用于相机开发和图片旋转
- 大话数据结构---线性表
- MyBatis的动态SQL详解 --转载
- javascript 秘密花园
- C#中的扩展方法
- 做平台网站建设需要注意的那些事
- 『转』区分Ruby的require,load,和include
- ubuntu忘记root密码 的解决方法
- Mono Touch Table应用