完整代碼如下:
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()
def his(img,bin):#基于opencv API畫
hist = cv.calcHist([img],[0],None,[256],[0,255])
plt.plot(hist,'r')
plt.show()
------------------------------代碼理解了嗎,休息一下吧
------------------------------我是廣告開始的分隔線
--------------------------------我是廣告結(jié)束的分隔線
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()
其完整代碼如下:
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()
聯(lián)系客服