为了账号安全,请及时绑定邮箱和手机立即绑定

OpenCV从Mat图像获取像素通道值

OpenCV从Mat图像获取像素通道值

C++
米琪卡哇伊 2019-10-08 15:35:59
也许我看起来不够努力,但是一切似乎都希望我使用数组。因此,如果foo是类似的东西,我如何获得foo的特定像素的通道值Mat foo = imread("bar.png")?
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

像素数组存储在cv :: Mat的“数据”属性中。假设我们有一个Mat矩阵,其中每个像素有3个字节(CV_8UC3)。


对于此示例,让我们在位置100x50处绘制一个红色像素。


Mat foo;

int x=100, y=50;

解决方案1:


创建一个宏函数,从数组中获取像素。


#define PIXEL(frame, W, x, y) (frame+(y)*3*(W)+(x)*3)

//...

unsigned char * p = PIXEL(foo.data, foo.rols, x, y);

p[0] = 0;   // B

p[1] = 0;   // G

p[2] = 255; // R

解决方案2:


使用ptr方法获取像素。


unsigned char * p = foo.ptr(y, x); // Y first, X after

p[0] = 0;   // B

p[1] = 0;   // G

p[2] = 255; // R


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 2296 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号