如何在带有循环的python中将灰度图像转换为二进制图像?

我想不使用阈值方法将灰度图像转换为二进制图像。我可以使用下面的代码到达图像的所有像素,但是我不知道如何相应地转换像素颜色。您能帮我吗?

import cv2


img=cv2.imread('rose.jpg',0)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

height=img.shape[0]
print("h=",h)
width=img.shape[1]
print("w=",w)  

for i in range(height):
    for j in range(width):
        k=img[i,j]
        print(k)
xmubobo 回答:如何在带有循环的python中将灰度图像转换为二进制图像?

我已经尝试应用您的逻辑并对此进行了编码,它正在工作!

import numpy as np
import cv2

img = cv2.imread("rose.jpg",cv2.IMREAD_GRAYSCALE)
height = img.shape[0]
width = img.shape[1]
threshold = 150

for i in np.arange(height):
    for j in np.arange(width):
        a = img.item(i,j) 
        if a > threshold:
           b = 255
        else:
           b = 0
    img.itemset((i,j),b)

cv2.imwrite('binary.jpg',img)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
,

我建议使用opencv内置的阈值功能。

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

其中127是阈值,255是最大值,cv2。THRESH_BINARY表示二进制阈值。如果需要将其倒置,则可以改为提供cv2.THRESH_BINARY_INV。

threshold_image将是您感兴趣的图像。

您可能必须先将图像转换为灰度,这可以通过

完成
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
本文链接:https://www.f2er.com/3150869.html

大家都在问