Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

OpenCV में पॉइंटर मेथड का उपयोग करके रंग कैसे कम करें?

इमेज प्रोसेसिंग में, हम इमेज पर गणना करते हैं। अधिक विशिष्ट होने के लिए, हम पिक्सेल पर गणना करते हैं इसलिए पिक्सेल की संख्या जितनी अधिक होगी, गणना उतनी ही अधिक समय लेने वाली होगी। गणना समय को कम करने के लिए, हमें इमेज को कुशलतापूर्वक स्कैन करने की आवश्यकता होती है। हम सीखेंगे कि पॉइंटर्स का उपयोग करके एक कुशल इमेज स्कैनिंग लूप को कैसे लागू किया जाए।

रंग कमी रणनीति का उदाहरण

रंगीन इमेज जैसे RGB इमेज 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;
using namespace std;

void reducing_Color(Mat &image, int div=64) {
    int total_rows = image.rows;
    int total_columns = image.cols * image.channels();
    for (int j = 0; j < total_rows; j++) {
        uchar* data = image.ptr<uchar>(j);
        for (int i = 0; i < total_columns; i++) {
            data[i] = data[i] / div * div + div / 2;
        }
    }
}

int main() {
    Mat image;
    image = imread("grapes.jpg");
    namedWindow("Image Window");
    reducing_Color(image);
    imshow("Image Window", image);
    waitKey(0);
    return 0;
}

आउटपुट

OpenCV में पॉइंटर मेथड का उपयोग करके रंग कैसे कम करें?

  1. Java OpenCV लाइब्रेरी का उपयोग करके रंगीन इमेज को सेपिया इमेज में कैसे बदलें? Java OpenCV लाइब्रेरी का उपयोग करके रंगीन इमेज को सेपिया इमेज में कैसे बदलें?

    रंगीन इमेज को सेपिया में बदलने का एल्गोरिदम −प्रत्येक पिक्सेल के लाल, हरे, नीले मान प्राप्त करेंइन 3 रंगों का औसत प्राप्त करें।गहराई और तीव्रता मान परिभाषित करें (आदर्श रूप से 20 और 30)।मानों को निम्नानुसार संशोधित करें −लाल = लाल + (गहराई*2)।हरा = हरा + गहराई।नीला = नीला - तीव्रता।सुनिश्चित करें कि

  1. OpenCV लाइब्रेरी का उपयोग करके पॉजिटिव इमेज को नेगेटिव में कैसे बदलें? OpenCV लाइब्रेरी का उपयोग करके पॉजिटिव इमेज को नेगेटिव में कैसे बदलें?

    इमेज को नेगेटिव में बदलने का एल्गोरिदमप्रत्येक पिक्सेल के लाल, हरे, नीले मान प्राप्त करेंप्रत्येक रंग मान को 255 से घटाएं और उन्हें नए रंग मानों के रूप में सेव करें।संशोधित रंगों से एक नया पिक्सेल मान बनाएं।नए मान को पिक्सेल पर सेट करें।Java में कार्यान्वयनImageIO.read() मेथड का उपयोग करके आवश्यक इम

  1. Java OpenCV लाइब्रेरी का उपयोग करके इमेज कैसे लिखें? Java OpenCV लाइब्रेरी का उपयोग करके इमेज कैसे लिखें?

    OpenCV लाइब्रेरी का उपयोग करके आप इमेज प्रोसेसिंग ऑपरेशन कर सकते हैं जैसे इमेज फ़िल्टरिंग, ज्यामितीय इमेज ट्रांसफॉर्मेशन, कलर स्पेस रूपांतरण, हिस्टोग्राम, आदि।इमेज लिखनाजब भी आप Imgcodecs क्लास की imread() मेथड का उपयोग करके इमेज की सामग्री पढ़ते हैं, तो परिणाम मैट्रिक्स ऑब्जेक्ट में पढ़ा जाता है।आप