簡體   English   中英

如何在python中顯示中間灰度圖像?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM