opencv获取矩阵某位置元素值的几种简便方法

获取某点像素值的方法

在输出像素值,不要直接用cout输出,将获得的像素幅值给一个变量,用cout输出这个变量。

1、ptr方法
    mat类提供了ptr函数获取任意行的首地址,例如ptr[i]返回第i行的首地址。
    例子:获取坐标【5,5】的像素值
        Mat TrainData=imread("C:\\Users\\andy\\Desktop\\特征图片.jpg",1);
        uchar *data=TrainData.ptr<uchar>(5);//获取第五行的首地址
        int a =data[5];//获取第五行第五列的像素值并幅值给a。
        cout<<a<<endl;//输出像素值
2、at 操作取矩阵值
    试了好多次数,终于摸到一下at的用法,例子如下。    
    Mat=trainData=imread("D:/Opencv_tutorials_Learning/ML_Svm/SvmLearn/1.jpg",1);       
int b=trainData.at<Vec3b>(1,10)[0];//这句话可以输出坐标(1,10)位置的0通道像素值,也就是B通道值
cout<<trainData.at<Vec3b>(1,10)[0]<<endl;//此语句可以运行,但运行时候没有输出任何值,但输出了换行
cout<<trainData.at<Vec3b>(1,10)<<endl;//此语句可以输出三通道的值,例如[230 222 102].
3、迭代器,这个方法比较复杂,初学就不考虑了。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值