首页 > 代码库 > opencv学习笔记(03)——遍历图像(迭代器法)
opencv学习笔记(03)——遍历图像(迭代器法)
1 #include <opencv2\highgui\highgui.hpp> 2 #include <opencv2\imgproc\imgproc.hpp> 3 #include <opencv2\core\core.hpp> 4 5 void colorReduce(cv::Mat& img, int div=64); 6 7 8 int main() 9 { 10 cv::Mat img_orginal = cv::imread("F:\\images\\boldt.jpg"); 11 cv::Mat img_altered = img_orginal.clone(); 12 13 colorReduce(img_altered); 14 15 cv::namedWindow("orignal"); 16 cv::imshow("orignal", img_orginal); 17 cv::namedWindow("altered"); 18 cv::imshow("altered", img_altered); 19 20 cv::waitKey(); 21 22 return 0; 23 } 24 25 void colorReduce(cv::Mat& img, int div) 26 { 27 int n = cv::log(static_cast<double>(div)) / cv::log(2.0); 28 int mask = 0xFF << n; 29 30 // 方式一: 31 //cv::Mat_<cv::Vec3b>::iterator it = img.begin<cv::Vec3b>(); 32 // 方式二: 33 cv::MatIterator_<cv::Vec3b> it = img.begin<cv::Vec3b>(); 34 for(; it!=img.end<cv::Vec3b>(); it++) 35 { 36 (*it)[0] = (*it)[0] & mask + div / 2; 37 (*it)[1] = (*it)[1] & mask + div / 2; 38 (*it)[2] = (*it)[2] & mask + div / 2; 39 } 40 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。