इमेज प्रोसेसिंग में, हम इमेज पर कंप्यूटेशन करते हैं। अधिक विशिष्ट होने के लिए, हम पिक्सेल पर गणना करते हैं ताकि पिक्सेल की संख्या जितनी अधिक हो, गणना करने में उतना ही अधिक समय लगे। गणना समय को कम करने के लिए, हमें छवि को कुशलतापूर्वक स्कैन करने की आवश्यकता है। हम सीखेंगे कि पॉइंटर्स का उपयोग करके एक कुशल इमेज स्कैनिंग लूप को कैसे लागू किया जाए।
यहां हम रंग घटाने की रणनीति के उदाहरण के साथ पिक्सेल स्कैनिंग प्रक्रिया देखेंगे। आरजीबी छवियों जैसे रंगीन चित्र 3 चैनलों से बने होते हैं। इनमें से प्रत्येक चैनल में समान संख्या में पिक्सेल होते हैं लेकिन संबंधित मानों के साथ। इनमें से प्रत्येक मान 8-बिट अहस्ताक्षरित चार मान है।
इसलिए, संभावित रंगों की कुल संख्या 256 x 256 x 256 =16,777,216 है। संभव रंग की इस विशाल संख्या को कम करने के लिए हम प्रत्येक पिक्सेल के मान को समान आकार के घन से विभाजित कर सकते हैं। यदि हम 8 x 8 x 8 घन का उपयोग करके मानों को विभाजित करते हैं तो संभावित रंगों की संख्या 32 x 32 x 32 =32,768 रंग बन जाती है।
जब रंगों की संख्या कम हो जाती है, तो सिस्टम तेज हो जाता है। इस कमी को पूरा करने के लिए, हमें प्रत्येक पिक्सेल को स्कैन करना होगा, जो एक समय लेने वाला कार्य है। इसलिए हमें एक कुशल छवि स्कैनिंग विधि की आवश्यकता है।
निम्न प्रोग्राम दर्शाता है कि OpenCV में पॉइंटर विधि का उपयोग करके रंग को कैसे कम किया जाए।
उदाहरण
#include<iostream> #include<opencv2/highgui/highgui.hpp> using namespace cv;//Declaring cv namespace using namespace std;//Declaring std namespace void reducing_Color(Mat &image, int div=64){ //Declaring the function// int total_rows = image.rows;//getting the number of lines// int total_columns = image.cols * image.channels();//getting the number of columns per line// for (int j = 0; j < total_rows; j++){ //initiating a for loop for rows uchar* data = image.ptr<uchar>(j); for (int i = 0; i < total_columns; i++){ //initiating a for loop for columns// data[i] = data[i] / div * div + div / 2;//processing the pixels// } } } int main() { Mat image;//taking an image matrix// image = imread("grapes.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; }
आउटपुट