OPENCV ——imageData 使用方式
来源:互联网 发布:java 键值对 常量 编辑:程序博客网 时间:2024/05/17 03:08
坐标是从0开始的,并且是相对图像原点的位置。图像原点或者是左上角 (img->origin=IPL_ORIGIN_TL) 或者是左下角 (img->origin=IPL_ORIGIN_BL) )
假设有 8-bit 1-通道的图像 I (IplImage* img):
I(x,y) ~ ((uchar*)(img->imageData + img->widthStep*y))[x]
假设有 8-bit 3-通道的图像 I (IplImage* img):
I(x,y)blue ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3]
I(x,y)green ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3+1]
I(x,y)red ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3+2]
例如,给点 (100,100) 的亮度增加 30 ,那么可以这样做:
CvPoint pt = {100,100};
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3] += 30;
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3+1] += 30;
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3+2] += 30;
或者更高效地:
CvPoint pt = {100,100};
uchar* temp_ptr = &((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3];
temp_ptr[0] += 30;
temp_ptr[1] += 30;
temp_ptr[2] += 30;
假设有 32-bit 浮点数, 1-通道 图像 I (IplImage* img):
I(x,y) ~ ((float*)(img->imageData + img->widthStep*y))[x]
现在,一般的情况下,假设有 N-通道,类型为 T 的图像:
I(x,y)c ~ ((T*)(img->imageData + img->widthStep*y))[x*N + c]
你可以使用宏 CV_IMAGE_ELEM( image_header, elemtype, y, x_Nc )
I(x,y)c ~ CV_IMAGE_ELEM( img, T, y, x*N + c )
也有针对各种图像(包括 4 通道图像)和矩阵的函数(cvGet2D, cvSet2D), 但是它们非常慢。
假设有 8-bit 1-通道的图像 I (IplImage* img):
I(x,y) ~ ((uchar*)(img->imageData + img->widthStep*y))[x]
假设有 8-bit 3-通道的图像 I (IplImage* img):
I(x,y)blue ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3]
I(x,y)green ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3+1]
I(x,y)red ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3+2]
例如,给点 (100,100) 的亮度增加 30 ,那么可以这样做:
CvPoint pt = {100,100};
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3] += 30;
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3+1] += 30;
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3+2] += 30;
或者更高效地:
CvPoint pt = {100,100};
uchar* temp_ptr = &((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3];
temp_ptr[0] += 30;
temp_ptr[1] += 30;
temp_ptr[2] += 30;
假设有 32-bit 浮点数, 1-通道 图像 I (IplImage* img):
I(x,y) ~ ((float*)(img->imageData + img->widthStep*y))[x]
现在,一般的情况下,假设有 N-通道,类型为 T 的图像:
I(x,y)c ~ ((T*)(img->imageData + img->widthStep*y))[x*N + c]
你可以使用宏 CV_IMAGE_ELEM( image_header, elemtype, y, x_Nc )
I(x,y)c ~ CV_IMAGE_ELEM( img, T, y, x*N + c )
也有针对各种图像(包括 4 通道图像)和矩阵的函数(cvGet2D, cvSet2D), 但是它们非常慢。
0 0
- OPENCV ——imageData 使用方式
- imageData 使用方式
- opencv——访问图像元素(imagedata widthstep)
- opencv imagedata
- ImageData
- VC下使用OpenCV最好先修改一下结构体IplImage中的数据指针imageData的类型...
- OpenCV中IplImage->imageData赋值需要注意的问题
- OpenCV关于IplImage的imageData问题出现负值
- OpenCV图像扫描原理及imageData概述FAQ
- OpenCV中IplImage->imageData赋值需要注意的问题 .
- caffe层解读系列——Data以及ImageData层用法
- 【OpenCV学习笔记】【函数学习】四(origin+imageData+cvcopy()函数+CvMemStorage 类型+CvPoint类型)
- 对于2.3版的OpenCV的IplImage,最好不要直接操作其imageData成员~
- OpenCV使用不同方式访问图像数据
- OpenCV学习笔记——使用OpenCV访问图像数据
- 学习OpenCV——KeyPoint Matching 优化方式
- 学习OpenCV——KeyPoint Matching 优化方式
- 【Compute Vision】学习OpenCV——KeyPoint Matching 优化方式
- BPM费控管理解决方案分享
- 通过SpannableString为TextView设置丰富的显示效果
- SDN之QoS--1:实验环境介绍(Floodlight)
- SUMO应用工具:OD2TRIPS
- Oozie分布式任务的工作流——Sqoop篇
- OPENCV ——imageData 使用方式
- Spring Cloud构建微服务架构(四)分布式配置中心
- SharePoint 2013管理中心里【管理服务器上的服务】不见了
- Android studio如何生成aar包
- 三分钟学会使用Git——命令行(一)
- 蓝鸥iOS从零基础到精通就业-C语言入门 10冒泡排序
- OpenCV中parallel_for 和 parallel_for_学习笔记
- CentOS sendmail via gmail with attachment
- CH14,P272,练习一,编码转化类---不大会应用