日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python知识:opencv实现的直方图

發(fā)布時間:2025/3/21 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python知识:opencv实现的直方图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

給定一幅彩色圖片,畫出三個通道的直方圖。做出對比。

一、學(xué)習(xí)要點:

1)cv2.calcHist直方圖產(chǎn)生函數(shù)

? cv2.calcHist( images, channels, mask, histSize, ranges[, hist[, accumulate ]])

?#計算直方圖函數(shù)參數(shù)

  • 第一個參數(shù)必須用方括號括起來,表示被計算的圖像,可以是多幅。
  • 第二個參數(shù)是用于計算直方圖的通道,這里使用灰度圖計算直方圖,所以就直接使用第一個通道,多幅圖像相當(dāng)于多通道;
  • 第三個參數(shù)是Mask,與原圖維度相同,被計算的區(qū)域,1計算,0不計算,這里沒有使用,所以用None。
  • 第四個參數(shù)是histSize,表示這個直方圖分成多少份(即多少個直方柱的數(shù)量)。
  • 第五個參數(shù)是表示直方圖中各個像素的值,[0.0, 256.0]表示直方圖能表示像素值從0.0到256的像素。

2)cv2.normalize歸一化函數(shù)

# Normalize the value to fall below 255, to fit in image 'h'

cv2.normalize(source_array, destination_array, alpha, beta, normalization_type)

  • source_array 是要歸一化的輸入圖像對應(yīng)的數(shù)組,
  • destination_array 是歸一化的輸出圖像對應(yīng)的數(shù)組,
  • alpha 表示下限邊界值,
  • beta 表示上限邊界值,并且
  • normalization_type 表示規(guī)范化的類型【 cv2.NORM_MINMAX,】。

3)?pts = np.column_stack函數(shù)

np.column_stack((bins, hist))

將兩個列向量合并后,拼成矩陣。

?pts = np.column_stack((bins, hist))??

4) cv2.polylines函數(shù)

cv.polylines(img,pts=pts,isClosed=True, color=(255, 255, 255), thickness=3)

參數(shù)如下:

img:要在上面畫多邊形的圖像
pts:包含多邊形上頂點的數(shù)組
isClosed:標(biāo)志,決定所繪制的多邊形是否閉合。若為 True ,則畫若干個閉合多邊形;若為 False ,則畫一條連接所有點的折線
color:多邊形顏色
thickness:多邊形線的粗細(xì)
lineType:多邊形線的類型
shift:坐標(biāo)精確到小數(shù)點后第幾位

二、代碼部分

#!/usr/bin/python # -*- coding: UTF-8 -*- # .Data:.2019/3/24 import cv2 import numpy as npimg = cv2.imread('D001.jpg') h = np.zeros((300, 256, 3)) # image to draw histogrambins = np.arange(256).reshape(256, 1) # Number of bins, since 256 colors, we need 256 bins color = [(255, 0, 0), (0, 255, 0), (0, 0, 255)]for ch, col in enumerate(color):hist_item = cv2.calcHist([img], [ch], None, [256], [0, 256]) # Calculates the histogramcv2.normalize(hist_item, hist_item, 0, 255,cv2.NORM_MINMAX) # Normalize the value to fall below 255, to fit in image 'h'hist = np.int32(np.around(hist_item))pts = np.column_stack((bins, hist)) # stack bins and hist, ie [[0,h0],[1,h1]....,[255,h255]]cv2.polylines(h, [pts], False, col)h = np.flipud(h) # You will need to flip the image verticallycv2.imshow('colorhist', h) cv2.waitKey(0) cv2.destroyAllWindows()

三、結(jié)果輸出

輸出BGR的三個通道直方圖。

總結(jié)

以上是生活随笔為你收集整理的Python知识:opencv实现的直方图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。