图像的灰度化和二值化

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()

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

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值