Computer >> Máy Tính >  >> Lập trình >> C ++

Làm cách nào để thay đổi giá trị Pixel bằng Phương pháp truy cập trực tiếp trong OpenCV?

Trong phương pháp trước (phương thức 'at'), chúng ta cần chỉ định loại hình ảnh trong khi truy cập các giá trị pixel. Có một phương pháp khác đơn giản hơn phương thức 'at'. Nó được gọi là phương pháp truy cập trực tiếp. Để truy cập giá trị pixel bằng phương pháp này, chúng ta cần chỉ định loại Mat chẳng hạn như Mat , Mat , Mat và như vậy.

Chương trình sau đây trình bày cách thay đổi Giá trị Pixel bằng Phương pháp Truy cập Trực tiếp trong OpenCV.

Ví dụ

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;//Declaring cv namespace
using namespace std;
void direct_access(Mat_<Vec3b> &image, int n){ //Declaring the function//
   for (int x = 0; x < n; x++){ //initiating a for loop//
      int i = rand() % image.cols;//accessing random column//
      int j = rand() % image.rows;//accessing random rows//
      image(j, i) = 0;//setting the pixel values to zero//
   }
}
int main() {
   Mat_<Vec3b> image;//taking an image matrix//
   Mat unchanged_Image;//taking another image matrix//
   image = imread("sky.jpg");//loading an image//
   unchanged_Image = imread("sky.jpg");//loading the same image//
   namedWindow("Noisy Image");//Declaring an window//
   namedWindow("Unchanged Image");//Declaring another window//
   direct_access(image, 4000);//calling the direct access function//
   imshow("Noisy Image", image);//showing the Noisy image
   imshow("Unchanged Image", unchanged_Image);//showing the unchanged image//
   waitKey(0);//wait for Keystroke//
   return 0;
}

Đầu ra

Làm cách nào để thay đổi giá trị Pixel bằng Phương pháp truy cập trực tiếp trong OpenCV?