OpenCVでポインターメソッドを使用して色を減らす方法は?
画像処理では、画像に対して計算を行います。具体的には、ピクセル数が多いほど計算に時間がかかるように、ピクセル単位で計算を行います。計算時間を短縮するには、画像を効率的にスキャンする必要があります。ポインタを使用して効率的な画像スキャンループを実装する方法を学習します。
ここでは、減色戦略の例とともにピクセルスキャンプロセスを見ていきます。 RGB画像などのカラー画像は3チャンネルで構成されています。これらの各チャネルのピクセル数は同じですが、対応する値があります。この値はそれぞれ、8ビットのunsignedchar値です。
したがって、可能な色の総数は256 x 256 x 256=16,777,216です。各ピクセルの値を同じサイズの立方体で割って、この膨大な数の可能な色を減らすことができます。 8 x 8 x 8の立方体を使用して値を除算すると、可能な色の数は32 x 32 x 32=32,768色になります。
色数を減らすと、システムが高速になります。この削減を実行するには、各ピクセルをスキャンする必要がありますが、これは時間のかかる作業です。そのため、効率的な画像スキャン方法が必要です。
次のプログラムは、OpenCVのポインターメソッドを使用して色を減らす方法を示しています。
例
#include<iostream> #include<opencv2/highgui/highgui.hpp> using namespace cv;//Declaring cv namespace using namespace std;//Declaring std namespace void reducing_Color(Mat &image, int div=64){ //Declaring the function// int total_rows = image.rows;//getting the number of lines// int total_columns = image.cols * image.channels();//getting the number of columns per line// for (int j = 0; j < total_rows; j++){ //initiating a for loop for rows uchar* data = image.ptr<uchar>(j); for (int i = 0; i < total_columns; i++){ //initiating a for loop for columns// data[i] = data[i] / div * div + div / 2;//processing the pixels// } } } int main() { Mat image;//taking an image matrix// image = imread("grapes.jpg");//loading an image// namedWindow("Image Window");//Declaring another window// reducing_Color(image);//calling the function// imshow("Image Window", image);//showing the image with reduced color// waitKey(0); return 0; }
出力
-
OpenCVライブラリを使用してポジティブイメージをネガティブに変換するにはどうすればよいですか?
画像をネガに変換するアルゴリズム 各ピクセルの赤、緑、青の値を取得します 255から各色の値を引き、新しい色の値として保存します。 変更した色から新しいピクセル値を作成します。 新しい値をピクセルに設定します。 Javaでの実装 ImageIO.read()メソッドを使用して必要な画像を読み取ります。 画像の高さと幅を取得します。 ネストされたforループを使用すると、画像の各ピクセルをトラバースします。 getRGB()メソッドを使用してピクセル値を取得します。 上記で取得したピクセル値をパラメータとしてバイパスしてColorオブジェ
-
Java OpenCVライブラリを使用してイメージを作成するにはどうすればよいですか?
OpenCVライブラリを使用すると、画像フィルタリング、幾何学的画像変換、色空間変換、ヒストグラムなどの画像処理操作を実行できます。 画像を書く Imgcodecsクラスのimread()メソッドを使用して画像のコンテンツを読み取るたびに、結果がMatrixオブジェクトに読み込まれます。 imwrite()メソッドを使用してイメージを書き込み/保存できます。これは2つのパラメータ、つまり-を受け入れます ファイル −結果を保存するファイルパスを表す文字列値。 Img −保存する画像のデータを含むマトリックスオブジェクト。 例 次のJavaの例は画像の内容を読み取りますc