数字图像处理基础与应用 第三章

3-1

from cv2 import cv2
import numpy as np

def linearBroader(img, tarmax, tarmin, curmax=0, curmin=0):
    img_shape = np.shape(img)
    img_flatten = img.flatten()
    curmax = max(img_flatten)
    curmin = min(img_flatten)
    for i in range(len(img_flatten)):
        if(img_flatten[i] < tarmin):
            img_flatten[i] = img_flatten[i] * curmin / tarmin
        elif (img_flatten[i] < tarmax):
            img_flatten[i] = (img_flatten[i] - curmin) * (tarmax - tarmin) / (curmax - curmin)
        else:
            img_flatten[i] = img_flatten[i] * (255 - curmax) / (255 - tarmax) + curmax
    return img_flatten.reshape(img_shape)


def nonLinearBroader(img, c):
    img_shape = np.shape(img)
    img_flatten = img.flatten()
    for i in range(len(img_flatten)):
        img_flatten[i] *= c
    return img_flatten.reshape(img_shape)


def histogramRandomGray(img):
    histr = cv2.calcHist([img.flatten()], [0], None, [256], [0, 255])
    tem = histr.flatten()
    tol = sum(tem)
    img_flatten = img.flatten()
    img_shape = np.shape(img)
    for i in range(len(img_flatten)):
            img_flatten[i] = int(255 * sum(tem[0: int(img_flatten[i])+1]) / tol)
    return img_flatten.reshape(img_shape)


img = cv2.imread("C:\\test\\1.jpg")
gray0 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
line0 = linearBroader(gray0, 250, 0)
non0 = nonLinearBroader(gray0, 1.05)
hist0 = histogramRandomGray(gray0)

cv2.imshow("img", img)
cv2.imshow("gray0", gray0)
cv2.imshow('line0', line0)
cv2.imshow('non0', non0)
cv2.imshow('hist0', hist0)
cv2.waitKey()
cv2.destroyAllWindows

```python
# 发现直方图均衡化有默认的方法
# hist0= cv2.equalizeHist(img)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值