python 图像处理 灰阶 分层_Python OpenCV实例:灰度图像线性运算

# coding:utf-8

'''

灰度图像线性运算

公式:g(x,y) = p * f(x,y) + L

其中:f(x,y)为输入灰度图像像素值,g(x,y)为输出灰度图像像素值

参数:p = 1,L = 0,则复制图像;

p > 1,则图像对比度减少

p = 1,L!=0,则图像变亮

p < 0,则图像变暗

'''

import cv2

import numpy as np

def grey_linear_compute(image,p,l):

img_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)

rows,cols = img_gray.shape

dist = np.zeros_like(img_gray)

for y in range(rows):

for x in range(cols):

pixel = img_gray[y,x]

new_pixel = wise_element(p * pixel + l)

dist[y,x] = new_pixel

return dist

def rgb_linear_compute(image,p,l):

# img_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)

image_rgb = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)

rows,cols,_ = image.shape

dist = np.zeros_like(image)

for y in range(rows):

for x in range(cols):

pixel = image_rgb[y,x]

r = wise_element(p * pixel[0] + l)

g = wise_element(p * pixel[1] + l)

b = wise_element(p * pixel[2] + l)

dist[y,x] = (b,g,r)

return dist

def wise_element(value):

dist = value

if dist > 255:

dist = 255

if dist < 0:

dist = 0

return dist

src = cv2.imread('datas/l1.jpg')

gray = grey_linear_compute(src,1.1,10)

rgb = rgb_linear_compute(src,1.1,10)

cv2.imshow('src-rgb',src)

cv2.imshow('src-gray',cv2.cvtColor(src,cv2.COLOR_RGB2GRAY))

cv2.imshow('gray',gray)

cv2.imshow('rgb',rgb)

cv2.waitKey()

cv2.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值