作業中の 640x480 グレースケール画像のヒストグラムを生成するのに苦労しています。
Python 2.7.3、OpenCV 2.4.6 (Python バインディング)、および Numpy を使用しています。
以下の画像は、実行可能なソフトウェア ツール (C++ でプログラム) を使用して、同じ画像から生成されたものです。
このヒストグラムのプロパティは次のとおりです。
bins = 50
hist_width = 250
normalised_height_max = 50
したがって、画像の仕様は 250x50 です
私はこのドキュメントを参照しました:
OpenCV でのヒストグラム計算 http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_calculation/histogram_calculation.html
Hist.py - OpenCV Python サンプル https://github.com/Itseez/opencv/blob/master/samples/python2/hist.py
2 番目のリファレンスのコードは正常にコンパイルされますが、細い線ではなくこれらのブロック スタイルの列を取得するように編集しようとしましたが、うまくいかないようです。
import cv2
import numpy as np
cv2.namedWindow('colorhist', cv2.CV_WINDOW_AUTOSIZE)
img = cv2.imread('sample_image.jpg')
h = np.zeros((50,256))
bins = np.arange(32).reshape(32,1)
hist_item = cv2.calcHist([img],0,None,[32],[0,256])
cv2.normalize(hist_item,hist_item,64,cv2.NORM_MINMAX)
hist=np.int32(np.around(hist_item))
pts = np.column_stack((bins,hist))
cv2.polylines(h,[pts],False,(255,255,255))
h=np.flipud(h)
cv2.imshow('colorhist',h)
cv2.waitKey(0)
次の仕様でヒストグラムを作成することを目指しています。
bins = 32
hist_width = 256
normalised_height_max = 64
指定された仕様で上記のようなヒストグラムを実現するために、このコードを修正するにはどうすればよいですか?