opencv c++ mat获取像素及像素赋值

For accessing pixel's channel value :

for (int i = ; i < image.cols; i++) {
for (int j = ; j < image.rows; j++) {
Vec3b intensity = image.at<Vec3b>(j, i);
for(int k = ; k < image.channels(); k++) {
uchar col = intensity.val[k];
}
}
}

For changing a pixel value of a channel :

uchar pixValue;
for (int i = ; i < image.cols; i++) {
for (int j = ; j < image.rows; j++) {
Vec3b &intensity = image.at<Vec3b>(j, i);
for(int k = ; k < image.channels(); k++) {
// calculate pixValue
intensity.val[k] = pixValue;
}
}
}

附录:引用

http://www.cppblog.com/gtwdaizi/articles/38521.html

C++返回引用类型 指针的引用

C++返回引用类型
A& a(){ return *this;} 就生成了一个固定地址的指针,并把指针带给你

但A a() { return *this;}会生成一个临时对象变量,并把这个临时变量给你
这样就多了一步操作

当返回一个变量时,会产生拷贝。当返回一个引用时,不会发生拷贝,你可以将引用看作是一个变量的别名,就是其他的名字,引用和被引用的变量其实是一个东西,只是有了两个名字而已。

问题的关键是,当你想要返回一个引用而不是一个拷贝时,你要确保这个引用的有效性,比如:
int & fun() { int a; a=10; return a; }
这样是不行的,因为a会在fun退出时被销毁,这时返回的a的引用是无效的。
这种情况下,如果fun的返回类型不是int & 而是int就没有问题了。

指针的引用
GetNearestFontInTwips(CFont *&aFont, const TFontSpec &aFontSpec);

第一个参数aFont是一个指针, 前面加上*&表示指针的引用, 其实可以如下看待这个方式(CFont*) &aFont, 这就一目了然了.


// image.at返回的是引用,将引用赋值到intensity
Vec3b intensity = image.at<Vec3b>(j, i); //intensity是image.at返回的引用的另一个别名
Vec3b &intensity = image.at<Vec3b>(j, i);

opencv Mat.at的更多相关文章

  1. Matlab to OpenCV Mat

    convert Matlab matrix to OpenCV Mat. Support CV_32FC3 only currently. The Code int matlab2opencv(cv: ...

  2. OpenCV Mat数据类型及位数总结(转载)

    OpenCV Mat数据类型及位数总结(转载) 前言 opencv中很多数据结构为了达到內存使用的最优化,通常都会用它最小上限的空间来分配变量,有的数据结构也会因为图像文件格式的关系而给予适当的变量, ...

  3. OpenCV Mat数据类型指针ptr的使用

    OpenCV Mat数据类型指针ptr的使用 cv::Mat image = cv::Mat(400, 600, CV_8UC1); //宽400,长600 uchar * data00 = imag ...

  4. Qt QImage与OpenCV Mat转换

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51029382 应一个朋友的要求,整理总 ...

  5. 快速遍历OpenCV Mat图像数据的多种方法和性能分析 | opencv mat for loop

    本文首发于个人博客https://kezunlin.me/post/61d55ab4/,欢迎阅读! opencv mat for loop Series Part 1: compile opencv ...

  6. 海康网络摄像机YV12转换为BGR,由opencv Mat显示 (转)

    我使用的是海康DS-2CD852MF-E, 200万,网络摄像机,已经比较老了,不过SDK在海康官网下载的,开发流程都差不多. 海康摄像机回调解码后的视频数据格式为YV12,顺便说一下YV12的数据格 ...

  7. Live YUV420 和 OpenCV Mat 的互相转换

    1. YUV420 -> Mat 可用于转换接受到的YUV视频源到OpenCV可以识别的数据 Mat myuv( Frame_Height + Frame_Height / 2, Frame_W ...

  8. OpenCv Mat操作总结

    Author:: Maddock Date: 2015-03-23 16:33:49 转载请注明出处:http://blog.csdn.net/adong76/article/details/4053 ...

  9. OpenCV MAT基本图像容器

    参考博客: OpenCv中cv::Mat和IplImage,CvMat之间的转换 Mat - 基本图像容器 Mat类型较CvMat和IplImage有更强的矩阵运算能力,支持常见的矩阵运算(参照Mat ...

  10. Opencv Mat的操作

    cout << mat 有错误的原因 You are using OpenCV built with VS10. The ostream operator << in the ...

随机推荐

  1. DataTable和DataRow利用反射直接转换为Model对象的扩展方法类

    DataTable和DataRow利用反射直接转换为Model对象的扩展方法类   /// <summary> /// 类 说 明:给DataTable和DataRow扩展方法,直接转换为 ...

  2. JAVA传输概念

    1.VO(View Object):视图对象,用于展示在前台界面. 2.DTO(Data Transfer Object):数据传输对象,泛指用于展示层与服务层之间的数据传输对象. 3. DTO和VO ...

  3. JavaScript语言基础9

    我们先看看以下这段代码: <span style="font-size:18px;"><HTML> <HEAD> <TITLE>He ...

  4. 再过半小时,你就能明白kafka的工作原理了

    本文在个人技术博客不同步发布,详情可猛戳 亦可扫描屏幕右侧二维码关注个人公众号,公众号内有个人联系方式,等你来撩... 为什么需要消息队列 周末无聊刷着手机,某宝网APP突然蹦出来一条消息" ...

  5. 自动添加QQ

    自动添加QQ <meta http-equiv="refresh" content="0; url=tencent://AddContact/?fromId=50& ...

  6. 二进制安装Mysql 5.6(免编译)

    安装系统基础软包 yum install -y make bc perl gcc openssl openssl-devel ncurses ncurses-devel 安装方式:二进制免编译安装 查 ...

  7. 多媒体开发之编码gop---什么是GOP

    所谓GOP,意思是画面组,MPEG格中的帧序列,分为I.P.B三种,如排成IBBPBBPBBPBBPBBP...样式,这种连续的帧图片组合即为GOP(画面群,GROUP OF PICTURE),是MP ...

  8. Ubuntu 13.10上用户怎样获得root权限,用户怎样获得永久root权限,假设配置root登录

    一.用户怎样获得root权限: 1. 进入terminal 2. 输入sudo  passwd root   并设置password,提示要你输入两次password.自己设定password,一定要 ...

  9. struts2的核心和工作原理 (转)

    转自--------http://blog.csdn.net/laner0515/article/details/27692673 在学习struts2之前,首先我们要明白使用struts2的目的是什 ...

  10. Mongoose学习(1)

    1.Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力    Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对    Entity : 由Mod ...