小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

python+opencv圖像處理(十四)

 pythonjava學(xué)習(xí) 2021-04-06
圖像直方圖
1、灰度圖像的直方圖
灰度圖像的直方圖是灰度級和這種灰度級的概率之間關(guān)系的圖形。
直接看圖,下圖中左側(cè)是原圖,右圖為其直方圖。

完整代碼如下:

import cv2 as cv

import matplotlib.pyplot as plt

def his(img,b):#matplotlib畫圖

    plt.figure("histogram")

    plt.title("histogram of lena")

    plt.hist(img.ravel(),bins=b)

    plt.show()

imge=cv.imread(r'E:\\image\\lenagray.jpg')

img=cv.cvtColor(imge,cv.COLOR_RGB2GRAY)

cv.imshow('lena',img)

his(img,256)

cv.waitKey(0)

cv.destroyAllWindows()

也可以用opencv自帶的函數(shù)calcHist()來畫直方圖,結(jié)果如下所示:

我只貼了自定義的函數(shù)代碼如下:

def his(img,bin):#基于opencv API

   hist = cv.calcHist([img],[0],None,[256],[0,255])

   plt.plot(hist,'r')

   plt.show()

此段函數(shù)的調(diào)用過程和上面的代碼是一樣一樣的。
函數(shù)calcHist()的使用方法百度一搜一大把

------------------------------代碼理解了嗎,休息一下吧

------------------------------我是廣告開始的分隔線

--------------------------------我是廣告結(jié)束的分隔線

2、彩色圖像的直方圖
灰度圖像只有一個通道,一般我們畫的是灰度圖像的直方圖。
如果要畫彩色圖像的直方圖,因?yàn)椴噬珗D像有三個通道,其實(shí)就是將三個通道分別來畫直方圖并疊加在一起即可。
如下例所示:

其代碼如下:

import cv2 as cv

import matplotlib.pyplot as plt

import matplotlib as mpl

mpl.rcParams['font.sans-serif']=['SimHei'] #指定默認(rèn)字體 SimHei為黑體

mpl.rcParams['axes.unicode_minus']=False #用來正常顯示負(fù)號

def image_hist(image):     #畫三通道圖像的直方圖

    color = ('b', 'g', 'r')   #這里畫筆顏色的值可以為大寫或小寫或只寫首字母或大小寫混合

    for i , color in enumerate(color):

        hist = cv.calcHist([image], [i], None, [256], [0, 256])  #計(jì)算直方圖

        plt.plot(hist, color)

        plt.xlim([0, 256])

        plt.title("lena的直方圖,不同顏色是不同通道")

    plt.show()

img=cv.imread(r'E:\\image\\lena.jpg')

cv.imshow('image',img)

image_hist(img)

cv.waitKey(0)

cv.destroyAllWindows()

3、掩膜直方圖
圖像的掩膜就是用選定的圖像、圖形或物體,對處理的圖像進(jìn)行遮擋,來控制圖像處理的區(qū)域或處理過程。
還是先上圖:

其完整代碼如下:

import cv2 as cv

import numpy as np

import matplotlib.pyplot as plt

import matplotlib as mpl

mpl.rcParams['font.sans-serif']=['SimHei'] #指定默認(rèn)字體 SimHei為黑體

mpl.rcParams['axes.unicode_minus']=False #用來正常顯示負(fù)號

img = cv.imread('E:\\image\\lena.jpg', 0)

# create a mask  應(yīng)用掩膜

mask = np.zeros(img.shape[:2], np.uint8)#img大小相同

mask[100:300, 100:400] = 255#部分位置全黑

masked_img = cv.bitwise_and(img, img, mask=mask)#掩膜后的圖像,由原圖與掩膜相與得到

hist_full = cv.calcHist([img], [0], None, [256], [0,256])#畫原圖的直方圖

hist_mask = cv.calcHist([img], [0], mask, [256], [0,256])#畫掩膜的直方圖

plt.subplot(221), plt.imshow(img, 'gray'),plt.title("原圖")

plt.subplot(222), plt.imshow(mask,'gray'),plt.title("掩膜")

plt.subplot(223), plt.imshow(masked_img, 'gray'),plt.title("掩膜后的圖")

plt.subplot(224), plt.plot(hist_full, color='r'), plt.plot(hist_mask, color='b')

plt.title("紅色為原圖直方圖,藍(lán)色為掩膜的直方圖")

plt.xlim([0,256])

plt.tight_layout()

plt.show()

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多