Python 图像灰度二值化
我是python新手,我的问题是编辑图像灰度的一些变化,我想对这幅图像进行二值化,大于100的像素值取值1(白色),小于100的像素值取值0(黑色) 所以有什么建议吗(对不起我的英语不好) 我的代码: `将numpy作为np导入 进口cv2Python 图像灰度二值化,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
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()