android opencv 如何获得特定像素点的颜色 20

 我来答
七真远吃是0s
推荐于2016-08-01 · TA获得超过255个赞
知道小有建树答主
回答量:336
采纳率:0%
帮助的人:119万
展开全部
使用 Mat 中对矩阵元素的地址定位的知识 (参考博文:OpenCV中对Mat里面depth,dims,channels,step,data,elemSize和数据地址计算的理解)
Code 1 :
int main()
{
//新建一个uchar类型的单通道矩阵(grayscale image 灰度图)
Mat m(400, 400, CV_8U, Scalar(0));
for (int col = 0; col < 400; col++)
{
for (int row = 195; row < 205; row++)
{
cout << (int)(*(m.data + m.step[0] * row + m.step[1] * col)) << " ==> ";
//获取第[row,col]个像素点的地址并用 * 符号解析
*(m.data + m.step[0] * row + m.step[1] * col) = 255;
cout << (int)(*(m.data + m.step[0] * row + m.step[1] * col)) << endl;
}
}
imshow("canvas", m);
cvWaitKey();
return 0;
}

Output 1 :
0 ==> 255
0 ==> 255
0 ==> 255
0 ==> 255
0 ==> 255
0 ==> 255
...

Code1只是演示了单通道的情况,对于多通道的例子,请看 Code2 然后再看 Code3。
Fn 2 :
使用 Mat::at 函数
原型 template<typename _Tp> inline _Tp& Mat::at(…) //其中参数有多个,也就是说 at 函数有多个重载
返回值为 Mat 类型, Mat 有个索引的重载,也就是 [] 符号的重载,用这个重载可以定位多通道数据,具体示例可以看下面代码
下面的代码把红色通道值大于128的颜色的置为白色,左边为原图,右边为处理过后的图。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bkwangzhe_2008
2012-12-15
知道答主
回答量:76
采纳率:0%
帮助的人:12万
展开全部
C++ native 代码下直接 mat.at<TYPE>(row,col),上层java怎么获取不知道、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式