TensorFlow+OpenCV图像处理( 三 图片特效——边缘检测、浮雕效果、颜色风格、油画特效)

3.10Canny边缘检测(API)

Canny算子应用详解

import cv2
import numpy as np
import random
img = cv2.imread('image0.jpg',1)
info = img.shape
height = info[0]
width = info[1]
cv2.imshow('img',img)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgG = cv2.GaussianBlur(gray,(3,3),0)
dst = cv2.Canny(img,100,100)
cv2.imshow('dst',dst)
cv2.waitKey()
cv2.destroyAllWindows()

3.11 Sobel算子边缘检测

Sobel算子应用详解

import cv2
import numpy as np
import random
import math
img = cv2.imread('image0.jpg',1)
info = img.shape
height = info[0]
width = info[1]
cv2.imshow('img',img)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst = np.zeros((height,width,1),np.uint8)
for i in range(height-2):
    for j in range(width-2):
        gx =(gray[i-1,j+1]-gray[i-1,j-1])+2*(gray[i,j+1]-gray[i,j-1])+(gray[i+1,j+1]-gray[i+1,j-1])
        gy = (gray[i+1,j-1]-gray[i-1,j-1])+2*(gray[i+1,j]-gray[i-1,j])+(gray[i+1,j+1]-gray[i-1,j+1])
        grad = math.sqrt(gy*gy + gx*gx)
        if grad>800:
            dst[i,j] = 255
        else:
            dst[i,j] = 0
cv2.imshow('dst',dst)
cv2.waitKey()
cv2.destroyAllWindows()

3.12浮雕效果

import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
info = img.shape
height = info[0]
width = info[1]
cv2.imshow('img',img)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst = np.zeros((height,width,1),np.uint8)
for i in range(height):
    for j in range(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()
cv2.destroyAllWindows()

在这里插入图片描述

3.13颜色效果

import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
info = img.shape
height = info[0]
width = info[1]
cv2.imshow('img',img)
dst = np.zeros(img.shape,np.uint8)
#蓝色效果
for i in range(height):
    for j in range(width):
        (b,g,r) = img[i,j]
        b = b*1.5
        g = g*1.3
        if b>255:
            b = 255
        if g>255:
            g = 255
        dst[i,j] = (b,g,r)
cv2.imshow('dst',dst)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述在这里插入图片描述

3.14油画特效

import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
info = img.shape
height = info[0]
width = info[1]
cv2.imshow('img',img)
dst = np.zeros((height,width,3),np.uint8)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
for i in range(4,height-4):
    for j in range(4,width-4):
        array1 = np.zeros(8,np.uint8)
        for m in range(-4,4):
            for n in range(-4,4):
                p1 = int(gray[i+m,j+n]/32)
                array1[p1] = array1[p1] + 1
        currentMax = array1[0]
        l = 0
        for k in range(0,8):
            if currentMax<array1[k]:
                l = k
        #简化 均值
        for m in range(-4,4):
            for n in range(-4,4):
                if gray[i+m,j+n] >= (l*32)  and gray[i+m,j+n]<= (l+1)*32:
                    (b,g,r) = img[i+m,j+n]
        dst[i,j] = (b,g,r)
cv2.imshow('dst',dst)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值