完整代碼如下: 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() |
|