学习笔记——CV_IMAGE_ELEM
2012-12-07 15:21
295 查看
做关于图像的程序,经常都会使用OpenCV,使用OpenCV又经常会使用一个重要的结构IplImage,使用这个结构又要经常对结构中的数据进行访问读写,所以就不得不对CV_IMAGE_ELEM记忆深刻了。
CV_IMAGE_ELEM(image,elemtype,row,col)是个宏定义,原来的访问函数较复杂,所以定义一个简单而方便使用的宏函数。
image参数为IplImage *指针,elemtype为数据类型,常为uchar,row和col分别是数据矩阵的行和列。
灰度图像为单通道,访问时使用CV_IMAGE_ELEM(image,uchar,i,j);
三通道的彩色图像,访问时使用CV_IMAGE_ELEM(image,uchar,i,j*3);CV_IMAGE_ELEM(image,uchar,i,j*3+1);CV_IMAGE_ELEM(image,uchar,i,j*3+2);访问三个通道的值。
值得注意的是初学者容易将i和j写反了,这样就出现了访问出界的错误,i的上限是img->height,而j的上限是img->width。
但这是情有可原的,因为OpenCV中CvRect和CvPoint等常用的结构使用的是点的坐标:
cvRect(int x,int y,int width,int height)和cvPoint(int x,int y)中的x上限是img->width,y上限是img->height。
也就是说,如果(i,j)这个点对应的像素值为CV_IMAGE_ELEM(image,uchar,i,j),那么它对应的点就是cvPoint(j,i)。
我在使用OpenCV之初,参考那本OpenCV的书,喜欢使用两个cvGetReal2D和cvSetReal2D两个函数访问图像数据,后来才发现这两个函数的速度是相当慢的,改为CV_IMAGE_ELEM的话速度简直飞速提高,你是不是也和我一样2过呢?哈哈~~~~~成长的路是艰辛的啊~
——菜鸟的学习笔记,希望和你一起进步!
CV_IMAGE_ELEM(image,elemtype,row,col)是个宏定义,原来的访问函数较复杂,所以定义一个简单而方便使用的宏函数。
image参数为IplImage *指针,elemtype为数据类型,常为uchar,row和col分别是数据矩阵的行和列。
灰度图像为单通道,访问时使用CV_IMAGE_ELEM(image,uchar,i,j);
三通道的彩色图像,访问时使用CV_IMAGE_ELEM(image,uchar,i,j*3);CV_IMAGE_ELEM(image,uchar,i,j*3+1);CV_IMAGE_ELEM(image,uchar,i,j*3+2);访问三个通道的值。
值得注意的是初学者容易将i和j写反了,这样就出现了访问出界的错误,i的上限是img->height,而j的上限是img->width。
但这是情有可原的,因为OpenCV中CvRect和CvPoint等常用的结构使用的是点的坐标:
cvRect(int x,int y,int width,int height)和cvPoint(int x,int y)中的x上限是img->width,y上限是img->height。
也就是说,如果(i,j)这个点对应的像素值为CV_IMAGE_ELEM(image,uchar,i,j),那么它对应的点就是cvPoint(j,i)。
我在使用OpenCV之初,参考那本OpenCV的书,喜欢使用两个cvGetReal2D和cvSetReal2D两个函数访问图像数据,后来才发现这两个函数的速度是相当慢的,改为CV_IMAGE_ELEM的话速度简直飞速提高,你是不是也和我一样2过呢?哈哈~~~~~成长的路是艰辛的啊~
——菜鸟的学习笔记,希望和你一起进步!
相关文章推荐
- opencv学习笔记1:CV_MAT_ELEM_PTR与CV_MAT_ELEM的用法
- Android Universal Image Loader 学习笔记(一)
- Flex 学习笔记 flexlib控件之_Base64Image(图片Base64互换
- GPUImage学习笔记
- iOS——button&&imageview的学习笔记
- Universal Image Loader 学习笔记-基本使用
- Universal Image Loader 学习笔记-设计模式
- 安卓学习笔记---自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示(矩形圆角加边框)
- [深度学习]Deep Residual Learning for Image Recognition(ResNet,残差网络)阅读笔记
- 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(五)Image View视图 学习笔记
- [置顶] iOS学习笔记47——图片异步加载之EGOImageLoading
- [深度学习论文笔记][Depth Estimation] Depth Map Prediction from a Single Image using a Multi-Scale Deep Netw
- 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(五)Image View视图 学习笔记
- CV_IMAGE_ELEM读取某点的像素
- CSS学习笔记:border-image
- 【深度学习】【caffe实用工具5】笔记27 windows下SSD网络中的get_image_size工具的使用
- matlab学习笔记 image,imagesc,imshow的用法
- Opencv2 学习笔记<一>:cv::Mat数据访问方式
- 图片的异步加载和双缓存学习笔记——DisplayImageOptions
- OpenCV学习笔记16 OpenCV图像处理模块ImgProc Module. Image Processing(九)