OpenCV มีคลาส 'Mat iterator' ที่เข้ากันได้กับ C ++ STL การใช้คลาส 'Mat iterator' เราสามารถเข้าถึงพิกเซลได้อย่างง่ายดายมาก เราต้องสร้างวัตถุของคลาส 'Mat iterator' เราสามารถทำได้เป็น 'Mat_
โปรแกรมต่อไปนี้สาธิตวิธีลดสีโดยใช้วิธี Iterator ใน OpenCV
ตัวอย่าง
#include<iostream>
#include<opencv2/highgui/highgui.hpp>
using namespace std;//Declaring std namespace
using namespace cv;//Declaring cv namespace
void reducing_Color(Mat& image, int div = 64){ //Declaring the function//
Mat_<Vec3b>::iterator iterator_start;//Declaring starting iterator//
iterator_start = image.begin<Vec3b>();//Obtain iterator at initial position//
Mat_<Vec3b>::iterator iterator_end;//Declaring ending iterator//
iterator_end = image.end<Vec3b>();//Obtain iterator an end position//
for (; iterator_start != iterator_end; iterator_start++){ //Loop for all pixels//
(*iterator_start)[0] = (*iterator_start)[0] / div * div + div / 2;//Process pixels of first channel//
(*iterator_start)[1] = (*iterator_start)[1] / div * div + div / 2;//Process pixels of second channel//
(*iterator_start)[2] = (*iterator_start)[2] / div * div + div / 2;//Process pixels of third channel//
}
}
int main() {
Mat image;//taking an image matrix//
image = imread("mango.jpg");//loading an image//
namedWindow("Image Window");//Declaring another window//
reducing_Color(image);//calling the function//
imshow("Image Window", image);//showing the image with reduced color//
waitKey(0);
return 0;
} ผลลัพธ์
