第一个迭代器 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