C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

OpenCVの「at」メソッドを使用してピクセル値を変更するにはどうすればよいですか?


グレースケール画像では、ピクセル値は単一の数値です。しかし、RGB画像などのカラー画像では、ピクセルは3つの値を持つベクトルです。これらの3つの値は、3つのチャネルを表します。

ここでは、グレースケール画像とRGB画像のピクセル値の両方にアクセスし、画像のピクセルにランダムにノイズを追加する関数を作成します。次に、main()関数内の関数を呼び出して、結果を観察します。

次のプログラムは、OpenCVの「at」メソッドを使用してピクセル値を変更する方法を示しています。

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;//Declaring cv namespace
using namespace std;
void adding_Noise(Mat& image, int n){ //'adding_Noise' 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//
      if (image.channels() == 1){ //apply noise to grayscale image//
         image.at<uchar>(j, i) = 0;//Changing the value of pixel//
      }
      if (image.channels() == 3){ //apply noise to RGB image//
         image.at<Vec3b>(j, i)[0] = 0;//Changing the value of first channel//
         image.at<Vec3b>(j, i)[1] = 0;//Changing the value of first channel//
         image.at<Vec3b>(j, i)[2] = 0;//Changing the value of first channel//
      }
   }
}
int main() {
   Mat 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//
   adding_Noise(image, 4000);//calling the 'adding_Noise' function//
   imshow("Noisy Image", image);//showing the Noisy image
   imshow("Unchanged Image",unchanged_Image);//showing the unchanged image//
   waitKey(0);//wait for Keystroke//
   destroyAllWindows();//return all allocated memory
   return 0;
}

出力

OpenCVの「at」メソッドを使用してピクセル値を変更するにはどうすればよいですか?


  1. Pythonでscikit-learnを使用して画像のピクセル値を表示するにはどうすればよいですか?

    データの前処理とは、基本的に、すべてのデータ(さまざまなリソースまたは単一のリソースから収集される)を共通の形式または統一されたデータセット(データの種類に応じて)に収集するタスクを指します。 実際のデータは決して理想的ではないため、データにセルの欠落、エラー、外れ値、列の不一致などが含まれる可能性があります。 場合によっては、画像が正しく配置されていないか、鮮明でないか、サイズが非常に大きいことがあります。前処理の目標は、これらの不一致やエラーを取り除くことです。 画像のピクセルを取得するには、「flatten」という名前の組み込み関数を使用します。画像が読み取られた後、ピクセル値はデ

  2. Image Resizer を使用して画像形式を変更する方法

    デジタル画像は、手持ちのスナップショットとは異なり、さまざまな目的に使用できます。サイズ変更、トリミング、回転、サイズ変更、フォーマットの変更が可能です。ただし、これらすべてを実行するには、これらの雑用を支援できる画像編集ツールが必要です。もちろん、Adobe Photoshop を使って写真を作成することもできますが、これは使いにくいプログラムです。この記事では、基本的で使いやすいツールである Image Resizer を使用して、デジタル写真の形式を変更することに焦点を当てます。このツールを使用して、画像を他の形式に簡単に変換できます。 画像サイズ変更プログラムの機能 画像サイズ変更ツー