Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จะเปลี่ยนค่า Pixel โดยใช้ Direct Access Method ใน OpenCV ได้อย่างไร?


ในวิธีก่อนหน้า (วิธี 'at') เราจำเป็นต้องระบุประเภทรูปภาพขณะเข้าถึงค่าพิกเซล มีอีกวิธีหนึ่งที่ง่ายกว่าวิธี 'at' เรียกว่าวิธีการเข้าถึงโดยตรง ในการเข้าถึงค่าพิกเซลโดยใช้วิธีนี้ เราจำเป็นต้องระบุประเภท Mat เช่น Mat, Mat, Mat เป็นต้น

โปรแกรมต่อไปนี้สาธิตวิธีการเปลี่ยนค่าพิกเซลโดยใช้วิธีการเข้าใช้โดยตรงใน OpenCV

ตัวอย่าง

#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;
}

ผลลัพธ์

จะเปลี่ยนค่า Pixel โดยใช้ Direct Access Method ใน OpenCV ได้อย่างไร?