栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

图像的灰度化和二值化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

图像的灰度化和二值化

1、灰度化

RGB模式的图片转化为灰度图的方式:

需要注意的是下图中的第一种处理方法RGB的三个数值要对应,后面的代码用opencv时,图像导入的是BGR,这个时候就要注意乘的数值不要弄错。

2、二值化

二值化就是将RGB值转化为0或者1。

if(img_gray[i,j]<=0.5)
    img_gray[i,j]=0
else:
    img_gray[i,j]=1

完整代码:

from skimage.color import rgb2gray
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import cv2
#手动灰度化
img = cv2.imread("lenna.jpg")
h,w = img.shape[:2]  #获取图片的高和宽
img_gary = np.zeros([h,w],img.dtype)  #创建一张和当前图片大小一样的单通道图片
for i in range(h):
    for j in range(w):
        m = img[i,j]   #取出当前高和宽中的BGR坐标
        img_gary[i,j] = int(m[0]*0.11 + m[1]*0.59 + m[2]*0.3)  #将BGR坐标转化为gray坐标并赋值给新图像
print("image show gray: %s"%img_gary)
cv2.imshow("iamge show gray",img_gary)
plt.subplot(221)
img = plt.imread("lenna.jpg")
plt.imshow(img)
print("-----image lenna-----")
print(img)

#调用opencv灰度化
img_gary = rgb2gray(img)
plt.subplot(222)
plt.imshow(img_gary,cmap='gray')
print("-----image_gray-----")
print(img_gary)

#二值化
img_binary = np.where(img_gary >= 0.5, 1, 0)
print("-----image_binary-----")
print(img_binary)
print(img_binary.shape)
plt.subplot(223)
plt.imshow(img_binary,cmap='gray')
plt.show()

效果展示:
 下图中的第一行的右边是灰度化的结果,第二行是二值化的结果。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/948070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号