質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

777閲覧

OpenCV グラフ変換の方法について

6254ryusei

総合スコア1

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/09/12 16:35

前提

OpenCVで画像処理を行っています。
RGBで表された線グラフを、色相別の棒グラフにしたいのですが方法がわからないので教えていただけると幸いです。

実現したいこと

RGBグラフ(線グラフ) → 色相別のグラフ(棒グラフ)

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

Python

ソースコード
import cv2
import numpy as np
import matplotlib.pyplot as plt
import collections
print(cv2.version)

from google.colab import files
f = files.upload()

from matplotlib import pyplot as plt
img = cv2.imread('tom.jpg')
img_1 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
colors = ("r", "g", "b")
for i, channel in enumerate(colors):
histgram = cv2.calcHist([img_1], [i], None, [256], [0, 256])
plt.plot(histgram, color = channel)
plt.xlim([0, 256])

plt.title("RGB",{"fontsize":25})
plt.xlabel("Hue",{"fontsize":15})
plt.ylabel("frequency",{"fontsize":15})

plt.show()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

forの外に括りだした場合forの外に括りださない場合(タイトルがRGBのままですね…)
イメージ説明イメージ説明

ポイントは2つあります。

  1. 棒グラフはplt.bar(横軸,縦軸)で描画します
  2. plt.show()をした段階でグラフが一個できますので、forの内側に入れてグラフをch毎に出すか、外側に移してグラフを3chまとめて出すか、が変わります。
import cv2 import numpy as np import matplotlib.pyplot as plt import collections # 関数がこれでないと動かない print(cv2.__version__) from matplotlib import pyplot as plt # ローカル用に改修 import os img = cv2.imread(os.path.split(os.path.abspath("__file__"))[0]+'/tom.jpg') img_1 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) colors = ("r", "g", "b") for i, channel in enumerate(colors): histgram = cv2.calcHist([img_1], [i], None, [256], [0, 256]) # plt.plot(histgram, color = channel) # 棒グラフ x_axis = np.asarray(range(len(histgram))) plt.bar(histgram.flatten(),x_axis, color = channel) # forの外側に括りだす plt.xlim([0, 256]) plt.title("RGB",{"fontsize":25}) plt.xlabel("Hue",{"fontsize":15}) plt.ylabel("frequency",{"fontsize":15}) plt.show()

投稿2022/09/12 22:05

編集2022/09/12 22:06
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問