opencv中的MatConstIterator,NAryMatIterator迭代器的使用

本文介绍了如何在OpenCV中使用MatConstIterator进行三通道三维数组中最长元素的计算,解析了从错误到正确实现的过程。接着讲解了NAryMatIterator的应用,展示如何按面相加多维数组,并通过实例演示了两数组相加并将结果存入第三个数组的对应位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一个迭代器 MatConstIterator迭代器
使用迭代器计算一个三通道三维数组中"最长元素"
这个代码实现过程中,照着书中的代码抄下来一直报错 后来在查阅代码的时候 发现了问题所在,具体已经在代码中标明了

#include <opencv2/opencv.hpp>
#include <opencv2/core/mat.hpp>
#include <iostream>

using namespace std;

int main( int argc, char** argv ) {
 int sz[3]={4,4,4};
cv::Mat m(3,sz,CV_32FC3);
cv::randu(m,-1.0f,1.0f);
float max=0.0f;
cv::MatConstIterator_<cv::Vec3f>it=m.begin<cv::Vec3f>();
while(it!=m.end<cv::Vec3f>())
{
    int	len2=(*it)[0]*(*it)[0]+(*it)[1]*(*it)[1]+(*it)[2]*(*it)[2];
	if(len2>max) max=len2;
	it++;
}
	cout<<max<<endl;
	return 0;
}

下面是NAryMatIterator迭代器的使用
按面将一个多维数组相加

#include <opencv2/opencv.hpp>
#include <opencv2/core/mat.hpp>
#include <iostream>

using namespace std;

int main( int argc, char** argv ) {
 int sz[3]={4,4,4};
cv::Mat m(3,sz,CV_32FC3);
cv::randu(m,-1.0f,1.0f);
flo
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值