也许我看起来不够努力,但是一切似乎都希望我使用数组。因此,如果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
- 3 回答
- 0 关注
- 2296 浏览
添加回答
举报
0/150
提交
取消