大佬教程收集整理的这篇文章主要介绍了c – OpenCV遍历列,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
for(int n = 0; n < mat.cols; n++) { cv::Mat c = mat.col(n); // do stuff to c }
但是如果可能,我想使用迭代器来做,以便我可以使用std :: accumulate或std :: transform来简化代码.
所以我基本上寻找像
for each Mat c in mat.columns@H_455_4@mat已经开始<>并且结束<功能,但据我所知,它只能用于迭代单个元素. 可以这样做吗 只是为了清楚我想写
cv::Mat input; cv::Mat output = std::accumulate(input.begincols(),input.endcols(),cv::Mat::zeros(n,k,CV_64F),[](const cv::Mat &acum,const cv::Mat &column) { return acum + column * 5; });
更新:
所以既然这还没有得到回答,如果有人有一个本土化的解决方案来提供这样的迭代器,我会看看,否则我可以自己研究一下,如果我有机会
template<class InputIt,class T> T std::accumulate(InputIt first,InputIt last,T init) { for (; first != last; ++first) { init = init + *first; } return init; }
你可以自己写,积累.
template<class InputIt,T init,std::size_t incr) { for (; first != last; first += incr) { init = init + *first; } return init; }
将其用于您的图像.你必须使用steplength(Math :: step1()我猜)为incr.这应该有效,但我还没有测试.如果为您工作,请提供反馈.
以上是大佬教程为你收集整理的c – OpenCV遍历列全部内容,希望文章能够帮你解决c – OpenCV遍历列所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。