第一个迭代器 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);
float max=0.0f;
cv::MatConstIterator_<cv::Vec3f>it=m.be

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

被折叠的 条评论
为什么被折叠?



