优草派  >   Python

python如何二值化图像?

刘国华            来源:优草派

在Python中如何二值化图像?

二值化是一种常见的图像处理方法,可以将灰度图像转换为黑白图像。在Python中,有多种方法可以实现这个过程。

python如何二值化图像?

方法一:使用opencv库的threshold()函数

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库。通过使用这个库中的threshold()函数可将灰度图像二值化。threshold()函数的语法如下:

retval,dst=cv.threshold(src,thresh,maxval,type)

参数解释:

• src:需要二值化的灰度图像。

• thresh:二值化的阈值。

• maxval:像素值超过阈值时的新值。

• type:二值化类型。

要将图像二值化为黑白图像,只需将maxval设置为255,将type设置为cv2.THRESH_BINARY即可。下面是使用OpenCV将图像二值化的示例代码:

import cv2

img=cv2.imread('your_image.jpg',0)

ret,thresh=cv2.threshold(img,127,255,cv2.THRESH_BINARY)

cv2.imshow('image',thresh)

cv2.waitKey(0)

cv2.destroyAllWindows()

方法二:使用Pillow库的ImageOps类中的方法

Pillow是Python Imaging Library(PIL)的一个分支,它添加了一些新的特性,同时也保留了原有的特性。使用Pillow中的ImageOps类中的方法可以快速实现二值化。下面是使用Pillow将图像二值化的示例代码:

from PIL import Image,ImageOps

img=Image.open('your_image.jpg').convert('L')

threshold=127

table=[]

for i in range(256):

if i

table.append(0)

else:

table.append(1)

img=ImageOps.grayscale(img).point(table,'1')

img.show()

方法三:使用NumPy库的ndarray中的方法

NumPy是一个开源的Python扩展库,支持大量的高维数组和矩阵运算。在NumPy中,可以通过设置特定的阈值来将灰度图像二值化。下面是使用NumPy将图像二值化的示例代码:

import numpy as np

from PIL import Image

def binaryzation(image_array,threshold):

for i in range(len(image_array)):

for j in range(len(image_array[0])):

if image_array[i][j] > threshold:

image_array[i][j] = 255

else:

image_array[i][j] = 0

return image_array

img=Image.open('your_image.jpg')

img_array=np.array(img)

gray_img=Image.open('your_image.jpg').convert('L')

gray_img_array=np.array(gray_img)

bin_img_array=binaryzation(gray_img_array,127)

bin_img=Image.fromarray(bin_img_array)

bin_img.show()

总结

Python中可以使用OpenCV、Pillow和NumPy等库来实现图像的二值化。不同的库提供了不同的方法来处理灰度图像。threshold()函数是一个常见并简单的方法,而ImageOps类和ndarray中的方法提供了更大的灵活性和更好的性能。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行