2017-10-05 120 views
0

我正在計算灰度圖像的直方圖,我想將灰度像素範圍轉換爲黑色。我使用下面的代碼來檢索histogram.`將所有灰度像素值轉換爲黑色

image = cv2.imread('./images/test/image_5352.jpg') 
cv2.imshow("image", image) 
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
cv2.imshow("gray", gray) 

hist = cv2.calcHist([gray], [0], None, [256], [0, 256]) 
plt.figure() 
plt.title("Grayscale Histogram") 
plt.xlabel("Bins") 
plt.ylabel("# of Pixels") 
plt.plot(hist) 
plt.xlim([0, 256]) 
key = cv2.waitKey(0) 
cv2.destroyAllWindows() 

Histogram of the image

例如,我想所有的像素轉換與黑50的價值。

+0

很肯定這是你想要的,如果是,隨意接聽與細節這個問題的http://answers.opencv .org/question/97416 /替換一個顏色範圍與一個特定的顏色在python/ – GPPK

+0

我相信opencv返回numpy數組的圖像。你可以使用布爾索引來操作圖像:'gray [gray == 50] = 0'應該可以工作。 – umutto

+0

49像素怎麼樣?還有51? –

回答

0

也許圖像閾值是你追求的...

如果像素值大於閾值時,它被分配一個值(可以是白色的),否則它被賦予另一個值(可能是黑色的)。

cv2.threshold(img,127,255,cv2.THRESH_BINARY)

上面的代碼是在C++中,但足夠容易轉換。第一個參數是所討論的圖像,第二個是閾值,第三個是如果它超過閾值則指定任何像素值,第四個是閾值類型,其中有多個:

enter image description here

對於進一步閱讀:see here

+0

感謝您的答案,但我不想將所有像素更改爲黑色和白色只是想改變一定範圍內的一些像素 –

+0

啊好的,我錯過了。你不能只用廣播嗎? https://docs.scipy.org/doc/numpy-1.13.0/user/basics.broadcasting.html – Sam