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

也许我看起来不够努力,但是一切似乎都希望我使用数组。因此,如果foo是类似的东西,我如何获得foo的特定像素的通道值Mat foo = imread("bar.png")


米琪卡哇伊
浏览 2297回答 3
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;   // Bp[1] = 0;   // Gp[2] = 255; // R解决方案2:使用ptr方法获取像素。unsigned char * p = foo.ptr(y, x); // Y first, X afterp[0] = 0;   // Bp[1] = 0;   // Gp[2] = 255; // R
打开App,查看更多内容
随时随地看视频慕课网APP