计算机视觉基础系列(python与opencv的操作与运用/tensorflow的基础介绍)(十四)---浮雕效果和颜色映射

1 浮雕效果

浮雕效果和边缘效果一样,也是需要求梯度的过程

计算公式:newP = gray0 - gray1 + 150,即,灰度图中,相邻的两个像素值之差加上150即为新的像素值

代码实现如下:

import cv2
import numpy as np
import math
img = cv2.imread('1.jpg', 1)
info = img.shape
cv2.imshow('src', img)
height = info[0]
width = info[1]
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
dst = np.zeros((height, width, 1), np.uint8)
for i in range(0, height):
    for j in range(0, width-1):
        grayP0 = int(gray[i, j])
        grayP1 = int(gray[i, j+1])
        newP = grayP0 - grayP1 + 150
        # 防止越界
        if newP > 255:
            newP = 255
        if newP < 0:
            newP = 0
        dst[i, j] = newP
cv2.imshow("dst", dst)
cv2.waitKey(0)

效果图为:

2 颜色映射

颜色映射有很多方法,也有的很复杂,这里运用的颜色映射的公式和工作量稍小,可以借鉴:
b = b*1.5    g = g*1.3

源码是:

import cv2
import numpy as np
import math
img = cv2.imread('1.jpg', 1)
info = img.shape
cv2.imshow('src', img)
height = info[0]
width = info[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 = b * 1.5
        g = g * 1.3
        # 防止越界
        if b > 255:
            b = 255
        if g > 255:
            g = 0
        dst[i, j] = (b, g, r)
cv2.imshow("dst", dst)
cv2.waitKey(0)

效果图如下,可以明显看到区别:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章