OpenCV基础问题汇总
来源:互联网 发布:机械制图知乎 编辑:程序博客网 时间:2024/05/16 01:27
OpenCV读取图像RGB各分量的方法
1. 直接定位到imageData,用数组的形式读取
unsigned char b=(unsigned char )m_image.GetImage()->imageData[0]; unsigned char g=(unsigned char )m_image.GetImage()->imageData[1]; unsigned char r=(unsigned char )m_image.GetImage()->imageData[2];
2. 使用CvScalar
IplImage *img=cvLoadImage("c://kobe.bmp",1); CvScalar s; for(int i=0; i<img->height; i++) { for(int j=0; j<img->width; j++) { s=cvGet2D(img,i,j); // get the (i,j) pixel value printf("B=%f, G=%f, R=%f ",s.val[0],s.val[1],s.val[2]); s.val[0]=111; s.val[1]=111; s.val[2]=111; cvSet2D(img,i,j,s); //set the (i,j) pixel value } }
cvGet2D()与cvSet2D() 的参数问题
对于图像中的某一像素点 P(x, y), 在我们正常的坐标系中,x代表其横坐标,y代表其纵坐标,而在opencv的函数 cvGet2D()与cvSet2D() 中,却行不通。cvGet2D() 的函数原型是 : CvScalar cvGet2D (const CvArr * arr, int idx0, int idx1); 函数返回的是一个CvScalar 容器,其参数中也有两个方向的坐标,但跟我们平常习惯的坐标不一样的是,idx0代表是的行,即高度,对应于我们平常坐标系的y, idx1代表的是列,即宽度,对应于我们平常坐标系的x,cvSet2D() 也类似。所以在使用cvSet2D() 与 cvGet2D() 时,千万要注意坐标的顺序。
cv::Mat 与 CvMat的区别
cv::Mat和CvMat都可以表示图像数据,只是却不明白他们之间到底什么区别,用CV::MAT 每次都有56byte的内存泄露。后来查看了源码才知道原来cv::Mat是一个类(Class),而CvMat是一个Struct。前者除了几个成员变量之外还有很多的成员函数和重载函数,可以实现很多的图像数据处理功能,而后者只有几个成员变量,要对其成员进行一些处理,需要借用别的函数。
typedef struct CvMat{ int type; int step; /* for internal use only */ int* refcount; int hdr_refcount; union //数据的指针 { uchar* ptr; short* s; int* i; float* fl; double* db; } data;#ifdef __cplusplus union { int rows; int height; }; union { int cols; int width; };#else int rows; int cols;#endif}CvMat;/*CvMat中的data数据只是矩阵数据的首地址,分配的内存大小为行列乘积。对该内存块的操作需要调用函数,也可以使用指针索引。*/
- OpenCV基础问题汇总
- OpenCV基础程序汇总
- opencv基础函数汇总
- opencv学习问题汇总
- Python opencv 问题汇总
- OPENCV编辑问题汇总
- OpenCV 2 遇到问题汇总
- Opencv 4 Android 问题汇总:
- OpenCV开发小问题汇总
- silverlight基础问题汇总
- git基础问题汇总
- java基础问题汇总
- vs2008+opencv显示视频问题汇总
- OPENCV学习遇到的问题汇总记录
- OpenCV配置设置编译等问题汇总
- VS+opencv配置出现问题汇总
- MFC+opencv遇到的问题汇总
- 基金基础问题答疑汇总
- 如何更安全地使用 PDF 文档
- Java 理论与实践: 嗨,我的线程到哪里去了?
- 练半场就够了,反正踢来踢去都是在我们的半场里踢
- 类成员函数指针
- 进程之基础知识
- OpenCV基础问题汇总
- c#深度复制 浅度复制
- 遍历CTreeCtrl
- Java虚拟机:JVM中的Stack和Heap
- 今天来玩玩博客
- Android系统权限和root权限
- ubuntu添加windows字体
- 常用JDBC连接数据库方式
- 浅谈Linux内核动态模块的编译