2020.12.07「openCVでカラー画像の編集を行いたいんだけど、やり方がまったくわからない。」この記事では、こんな悩みを解決します。私自身、openCVで画像処理の勉強を始めたころ、画像とはどのような情報の集合体で、それがどのようにコンピューター上で表現されているのか、ということがよく理解できず苦労しました。今ではある程度理解することができるようになりましたが、昔の私のように理解できず苦しんでいる人は多いはず。いうことで、この記事では、openCVにおけるカラー画像の配列概念を詳細に説明していきます。基礎知識openCVにおける画像配列処理の事例コードおわりに画像配列の概念説明まず始めに、カラー画像とはどのような情報の集合体であるのかを説明します。画素位置】、【それぞれの画素位置における色の三要素(青、緑、赤)の度合い】という大きく分けて3つの軸から成り立っています。※この色度合というのは、0から255までの数値で現れており、数値が大きいほどその色の度合いが強いことを意味しています。色というのは、青、緑、赤という三つの要素を度合を変えてブレンドしてあげることでほとんどの色は表現することが可能です。青50%と赤50%を混ぜたら紫になるという感じです。これらのざっくりとした概念を覚えておきましょう。次にこれらの情報を操作する練習をしていきましょう。※ここではpythonでopenCVを扱うことを想定して説明します。]という形で表現されます。画像の縦方向の位置、画像の横方向の位置、何色の面か、ということを表現しています。基本的には、この*の部分を指定し、数値を与えてあげることで、ある場所の赤の度合いがこれくらい、青の度合いはこれくらい、というように設定してあげることが可能です。配列処理を、ベースとなる配列がなければ話になりません。今回は縦500ピクセル、横500ピクセル、色の三要素がすべてゼロという配列が準備されていることを想定して説明していきます。※今回はpicという配列名にしています。これをイメージで表すと以下の通りです。すべての色の要素がゼロ、つまり真っ黒なので、この配列は縦500ピクセル、横500ピクセルの真っ黒な画像を表しています。この真っ黒な画像配列に対して、いろいろな処理を施していこうと思います。ここからはいろいろな処理事例をどんどん紹介します。ひとつひとつの処理内容と、その結果画像の配列がどう変わるのかを見え行けば、画像の情報操作方法をイメージできるはずです。◆例題1◆例題2◆例題3どうでしょうか?画素位置の指定方法と色の三要素の指定方法をイメージできてきたのではないでしょうか?まだまだいきます。使用方法についてご紹介しました。非常に便利なので、ぜひマスターしておきましょう。最後に色の度合いも変更してみましょう。◆例題6これまではすべて色の度合いを255に指定していましたが、このように色の度合いを現象させると鮮やかさが減り、くすんだような色に変化していきます。基本的には、青、緑、赤の三要素の度合いをうまく調整し、かつブレンドすることで、色というのは表現されています。◆色の度合いを調整する方法を学べたと思います。画像の配列概念と、その中の情報を操作する方法がわかったとおもいますので、実際のプログラミングコードの書き方を簡単にご紹介していきます。スポンサーリンクopenCVにおける画像配列処理の事例コード今回は以下のような画像を作成してみようと思います。この画像を作成するpython-openCVのプログラミングコードは以下の通りです。詳細な説明は省略しますが、ここまでで習得した知識と簡単なpythonコードを読む力さえあれば、どんな処理をやっているのかは理解できるはずです。✔pic[*,*,*]=*で使用画素の色要素を指定(今回はabs関数を使って斜めに各色の線が入るようにしています。)✔cv2.imwriteで作成した配列を画像化こんな感じです。意味がわからない点があればお気軽にコメント欄やTwitterから質問してください。スポンサーリンクおわりにというわけで今回はpython-openCVでの画像配列の概念説明&配列内の情報操作方法について、初心者向けに詳細解説を行いました。画像処理について、あなたの理解が深まっていれば幸いです。このように私のブログでは様々なプログラミングスキルを紹介しています。・もっと革新的なことをやりたい。・プログラミングについてもっと詳しくなりたい。こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。この記事が役に立ったという方は、ぜひ応援よろしくお願いします。コピーヒガシをフォローするスポンサーリンクヒガシヒガサラblogスポンサーリンクpython【python】matplotlibを使ったグラフ作成演習!サンプルデータで実演!この記事では、python上でグラフを作成することができるmatplotlibというライブラリの使い方をご紹介していきます。以下が作成するグラフのサンプルです。初心者向けに最低限のスキルのみを...python【python-openCV】画像をパネル分割⇒回転動画を作成!こんにちは、ヒガシです。今回は久しぶりに無益な画像処理お遊びをご紹介していきます。具体的には以下のような動画を作成していきます。以下のようにマスク処理を実施する方法をご紹介していきます。...python【超簡単】pythonでデータから線形近似式の切片、傾きを算出する方法(numpy演習)pythonで線形近似式を算出する方法をご紹介しています。同じデータをエクセルで処理した場合と比較していますので、何をやっているのかイメージしやすいものになっていると思います。python【python】numpy形式のまま配列を保存&既存配列をロードする方法!この記事では、python上で作成したnumpy配列を保存する方法、および保存されているnumpy配列をpython上にロードする方法をご紹介していきます。マウス位置座標履歴を以下のようにテキストファイルに出力する方法をご紹介していきます。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。ご指摘ありがとうございます。修正させていただきましました。【python-openCV】背景画像に別の画像を合成する方法!やぎ2023.05.29こんにちは。書く必要があると思います。【python-openCV】背景画像に別の画像を合成する方法!サトシ2023.05.11承知しました。アドバイス本当にありがとうございます。【VBA】大量のファイル名変更!指定したフォルダ内を一括操作!ヒガシ2023.05.11/はフォルダの階層が変わることを意味しますので使えません。substitute関数などを使って別文字に変換してから実行すると良いと思います。【VBA】大量のファイル名変更!指定したフォルダ内を一括操作!サトシ2023.05.10何度もすみません。/を使うと出来ないみたいです。2001-001-1/4とかにしたいのですが、ファイルが見つかりませんとかパスが無効ですとなります。検索タイトルとURLをコピーしました。