[英]How can I show median gray level image in python?
我有一張圖片,我在圖片中發現了5 * 5的中位數和偏差,並將其保存到和圖片中。 現在,當我顯示結果時,它們是原始圖像的遮罩,而事實並非如此。 它應該顯示灰度圖像而不是黑白圖像! 你知道我犯了什么錯誤嗎?
這是我的代碼:
img = cv2.imread('M.png', 0)
win = 5 # block window
height, width = img.shape
MedianOfBlock = []
DeviationOfBlock = []
for i in range(0, (height-2*win)):
MedianOfBlock.append([])
DeviationOfBlock.append([])
for j in range(0, (width- 2*win)):
block = np.array(img[i:i+win, j:j+win])
# Compute the median in each window
MedianOfBlock[i].append(np.median(block))
# Compute the standard deviation in each window
DeviationOfBlock[i].append(FindDeviation(block,MedianOfBlock[i][j], win))
DeviationOfBlock2 = np.array(DeviationOfBlock)
MedianOfBlock2 = np.array(MedianOfBlock)
cv2.imshow('OriginalImage',img)
cv2.waitKey()
cv2.imshow('MedianImage',MedianOfBlock2 )
cv2.waitKey()
cv2.imshow('DeviationOfBlock',DeviationOfBlock2 )
cv2.waitKey()
非常感謝你的幫助。
我認為您正在嘗試進行圖像過濾,此過程由內核卷積完成, cv2.filter2D
模塊具有一個稱為cv2.filter2D
的功能。 您可以對使用平均內核的中位數內核進行圖像過濾。
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('opencv_logo.png')
kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(img,-1,kernel)
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(dst),plt.title('Averaging')
plt.xticks([]), plt.yticks([])
plt.show()
觀察:如果您沒有matplotlib
模塊,則只需安裝它或使用Opencv中的默認繪圖功能
請檢查文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.