美文网首页
34. 灰度处理

34. 灰度处理

作者: 十里江城 | 来源:发表于2019-11-12 15:42 被阅读0次

本文解释灰度处理的方法实现与算法的优化

1) 灰度处理的三种方法:

  • 灰度读取
  • 颜色转换
  • 求均值法
  • 心理学公式

法1 灰度读取

import cv2 

img1 = cv2.imread('face.jpg', 1) 
img0 = cv2.imread('face.jpg', 0) 
print(img0.shape)
print(img1.shape)
cv2.imshow('src', img1)
cv2.imshow('dst1', img0)
cv2.waitKey(0)

维度变化与灰度图像显示如下:


image.png image.png

法2 颜色转换

import cv2

img = cv2.imread('face.jpg', 1)
dst = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('src', img)
cv2.imshow('dst2', dst)
cv2.waitKey(0)


结果如下:


image.png

法3 (B+G+R) / 3

import cv2
import numpy as np

img = cv2.imread('face.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
# R = G = B: gray
dst = np.zeros((height, width, 3), np.uint8)
for i in range(0, height):
    for j in range(0, width):
        (b, g, r) = img[i, j]
        gray = (int(b) + int(g) + int(r)) / 3
        dst[i, j] = np.uint8(gray)
cv2.imshow('src', img)
cv2.imshow('dst3', dst)
cv2.waitKey(0)
        
        

结果如下:

image.png

法4 心理学公式 gray = r * 0.299 + g * 0.587 + b * 0.114

import cv2
import numpy as np
img = cv2.imread('face.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
# R = G = B: gray
dst = np.zeros((height, width, 3), np.uint8)
for i in range(0, height):
    for j in range(0, width):
        (b, g, r) = img[i, j]
        b = int(b)
        g = int(g)
        r = int(r)
        gray = r * 0.299 + g * 0.587 + b * 0.114
        dst[i, j] = np.uint8(gray)
cv2.imshow('src', img)
cv2.imshow('dst4', dst)
cv2.waitKey(0)

结果如下:


image.png

2) 灰度算法优化

# 灰度重要- 基础- 实时性要求
# 灰度图像的优化: 
# - 定点优于浮点
# - ”+-“优于于乘除
# - 移位优于乘除
# 对r*0.299 + g*0.578 + b*0.114

import cv2
import numpy as np 

img = cv2.imread('face.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]

dst = np.zeros((height, width, 3), np.uint8)
for i in range(0, height):
    for j in range(0, width):
        (b, g, r) = img[i, j]
        b = int(b)
        g = int(g)
        r = int(r)
        # 浮点-> 定点
        # gray = (b * 1 + g * 2 + r * 1) / 4
        # 定点-> 移位  "(g<<1)"
        gray = (r + (g << 1) + b ) >> 2
        dst[i, j] = np.uint8(gray)        
cv2.imshow('img', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)

结果如下:


image.png

相关文章

  • 34. 灰度处理

    本文解释灰度处理的方法实现与算法的优化 1) 灰度处理的三种方法: 灰度读取 颜色转换 求均值法 心理学公式 法1...

  • iOS OpenCV 图像灰度处理

    iOS OpenCV 图像灰度处理 iOS OpenCV 图像灰度处理

  • 2018-03-04~提纲

    图像的像素,频率,格式 灰度值处理,阈值 灰度直方图 灰度梯度图HOG 图像分割 平滑,去噪(中值滤波) 锐化~边...

  • 图像灰度处理

    第一种:OpenCV(导入openCV开发包) opencv的全称是:Open Source Computer V...

  • 图像增强整理

    功能与算法对应表 参考文档 灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割 《数字图像处理》(...

  • 2-利用OpenCV来进行图片的灰度处理

    本篇本章介绍4种方法来进行图片的灰度处理。 方法一,利用OpenCV种的imread 这里可以发现,灰度处理的图片...

  • 用C++打造停车场收费管理系统,中国车牌识别技术领先全球

    C++ 车牌识别源代码示例。对车牌进行图像灰度化、灰度均衡化、边缘检测、预处理、定位车牌、分割车牌、车牌二值化处理...

  • 计算机视觉(3) 图像特效

    图像特效 本次内容重点是如何使用滤镜为图片添加特效,以及这些滤镜背后算法。 灰度处理 灰度处理算法非常简单但是这不...

  • 【Simple Shader】UI灰度处理

    写在前面,今天看了一下灰度处理的shader,发现其实不是很难。 原理 把原来图片颜色值做一个灰度处理,这句话说了...

  • 01灰度处理1

    imread方法1 imread 方法2 cvtColor

网友评论

      本文标题:34. 灰度处理

      本文链接:https://www.haomeiwen.com/subject/qzhqictx.html