Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Cách thay đổi giá trị pixel bằng phương pháp 'at' trong OpenCV

Trong ảnh xám, giá trị pixel là một giá trị số đơn lẻ. Nhưng trong ảnh màu như ảnh RGB, pixel là một vector có ba giá trị đại diện cho ba kênh.

Chúng ta sẽ tạo một hàm truy cập giá trị pixel của cả ảnh xám và ảnh RGB, sau đó thêm nhiễu ngẫu nhiên vào các pixel. Hàm này được gọi trong main() để quan sát kết quả.

Ví dụ

#include <iostream>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;

void adding_Noise(Mat& image, int n) {
    for (int x = 0; x < n; x++) {
        int i = rand() % image.cols;
        int j = rand() % image.rows;
        if (image.channels() == 1) {
            image.at<uchar>(j, i) = 0;
        }
        if (image.channels() == 3) {
            image.at<Vec3b>(j, i)[0] = 0;
            image.at<Vec3b>(j, i)[1] = 0;
            image.at<Vec3b>(j, i)[2] = 0;
        }
    }
}

int main() {
    Mat image;
    Mat unchanged_Image;
    image = imread("sky.jpg");
    unchanged_Image = imread("sky.jpg");
    namedWindow("Noisy Image");
    namedWindow("Unchanged Image");
    adding_Noise(image, 4000);
    imshow("Noisy Image", image);
    imshow("Unchanged Image", unchanged_Image);
    waitKey(0);
    destroyAllWindows();
    return 0;
}

Kết quả

Cách thay đổi giá trị pixel bằng phương pháp  at  trong OpenCV