วิธีใช้:สารบัญ
วัตถุประสงค์
- ในบทนี้เราจะเรียนรู้ที่จะค้นหาและพล็อต histograms 2D มันจะมีประโยชน์ในบทที่มา
บทนำ
ในบทความแรกเราคำนวณและพล็อตหนึ่งมิติ histogram มันถูกเรียกว่าหนึ่งมิติเพราะเราใช้เวลาเพียงแค่หนึ่งคุณลักษณะที่เข้าสู่การพิจารณาของเราคือค่าความเข้มสีเทาของพิกเซล แต่ใน histograms สองมิติคุณพิจารณาสองลักษณะ โดยปกติจะใช้สำหรับการหา histograms สีที่สองคุณสมบัติที่เว้และความอิ่มตัวค่าของทุกพิกเซล
มีตัวอย่างPython(ตัวอย่าง / python / color_histogram.py) การค้นหา histograms สี เราจะพยายามที่จะเข้าใจวิธีการสร้างเช่น histogram สีและมันจะเป็นประโยชน์ในการทำความเข้าใจหัวข้อต่อไปเช่น Histogram กลับฉาย
2D Histogram in OpenCV
มันค่อนข้างง่ายและคำนวณโดยใช้ฟังก์ชั่นเดียวกัน cv2.calcHist () สำหรับ histograms สีเราต้องแปลงภาพจาก BGR เพื่อ HSV (อย่าลืมว่าสำหรับ 1D histogram เราดัดแปลงมาจาก BGR ระดับสีเทา) สำหรับ histograms 2D, พารามิเตอร์ของมันจะได้รับการแก้ไขดังต่อไปนี้
- ช่อง = [0,1] เพราะเราจำเป็นต้องดำเนินการทั้ง H และ S
- bins = [180,256] 180 for H plane and 256 for S plane.
- range = [0,180,0,256] Hue value lies between 0 and 180 & Saturation lies between 0 and 256.
import cv2 import numpy as np img = cv2.imread('home.jpg') hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) hist = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
2D Histogram in Numpy
numpy นอกจากนี้ยังมีฟังก์ชั่นที่เฉพาะเจาะจงสำหรับนี้ np.histogram2d () (อย่าลืมว่าสำหรับ 1D histogram เราใช้ np.histogram ())
import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('home.jpg') hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) hist, xbins, ybins = np.histogram2d(h.ravel(),s.ravel(),[180,256],[[0,180],[0,256]])