Python 图像灰度二值化

Python 图像灰度二值化,python,opencv,computer-vision,Python,Opencv,Computer Vision,我是python新手,我的问题是编辑图像灰度的一些变化,我想对这幅图像进行二值化,大于100的像素值取值1(白色),小于100的像素值取值0(黑色) 所以有什么建议吗(对不起我的英语不好) 我的代码: `将numpy作为np导入 进口cv2 image = cv2.imread('Image3.png', 0) dimension = image.shape height = dimension[0] width = dimension[1] #finalimage = np.zero

我是python新手,我的问题是编辑图像灰度的一些变化,我想对这幅图像进行二值化,大于100的像素值取值1(白色),小于100的像素值取值0(黑色) 所以有什么建议吗(对不起我的英语不好)

我的代码:

`将numpy作为np导入 进口cv2

image = cv2.imread('Image3.png', 0)




dimension = image.shape
height = dimension[0]
width = dimension[1]

#finalimage = np.zeros((height, width))
for i in  range(height) :
    for j in  range(width):
        
        if (image[i, j] > 100):
            image[i][j] = [1]  
        else:
            image[i][j] = [0]

cv2.imshow('binarizedImage',image)
cv2.waitKey(0)
cv2.destroyAllWindows()

我想您只是想使用np.where():


您可以尝试使用OpenCV函数cv2.threshold进行二值化

import cv2
img = cv2.imread('Image3.png', cv2.IMREAD_GRAYSCALE)
thresh = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY)[1]
cv2.imshow('binarizedImage',thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

您可能希望使用255而不是1,但是这段代码是否有一些不起作用的地方?是的,当我执行程序时,它会显示一个黑色图像
In [11]: image
Out[11]: 
array([[200,  50, 200],
       [ 50,  50,  50],
       [ 10, 255,  10]])

In [12]: np.where(image > 100, 1, 0)
Out[12]: 
array([[1, 0, 1],
       [0, 0, 0],
       [0, 1, 0]])
import cv2
img = cv2.imread('Image3.png', cv2.IMREAD_GRAYSCALE)
thresh = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY)[1]
cv2.imshow('binarizedImage',thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()