पिछली मेथड ('at' मेथड) में, पिक्सेल मानों को एक्सेस करते समय हमें इमेज टाइप निर्दिष्ट करने की आवश्यकता होती है। एक और मेथड है जो 'at' मेथड से सरल है। इसे डायरेक्ट एक्सेस मेथड कहा जाता है। इस मेथड का उपयोग करके पिक्सेल मान को एक्सेस करने के लिए, हमें Mat टाइप जैसे Mat<uchar>, Mat<Vec3b>, Mat<Vec2i> आदि निर्दिष्ट करने की आवश्यकता होती है।
निम्नलिखित प्रोग्राम दर्शाता है कि OpenCV में डायरेक्ट एक्सेस मेथड का उपयोग करके पिक्सेल मान कैसे बदलें।
उदाहरण
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
void direct_access(Mat_<Vec3b> &image, int n) {
for (int x = 0; x < n; x++) {
int i = rand() % image.cols;
int j = rand() % image.rows;
image(j, i) = 0;
}
}
int main() {
Mat_<Vec3b> image;
Mat unchanged_Image;
image = imread("sky.jpg");
unchanged_Image = imread("sky.jpg");
namedWindow("Noisy Image");
namedWindow("Unchanged Image");
direct_access(image, 4000);
imshow("Noisy Image", image);
imshow("Unchanged Image", unchanged_Image);
waitKey(0);
return 0;
}
आउटपुट
