IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 计算机视觉:图片的边缘检测、映射和油画效果 -> 正文阅读

[人工智能]计算机视觉:图片的边缘检测、映射和油画效果

1.图片的边缘检测

1.1 调用cv2 api方法

import cv2

img = cv2.imread(filename='../anqila21.jpg',flags=1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)   # 灰度处理
imgG = cv2.GaussianBlur(gray,(3,3),0)   # 高斯滤波,第二个参数为模板大小
dst = cv2.Canny(imgG,50,50)
cv2.imshow('dst',dst)
cv2.waitKey(0)

请添加图片描述

1.2 算法实现

现在我们使用算法实现,并且把它的背景颜色改为白色,线条颜色改为黑色,为了让效果更加明了,换一张大一点的图片。

import cv2
import numpy as np
import math

# 算法实现
img = cv2.imread(filename='../../anqila.jpg',flags=1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)   # 灰度处理
dst = np.zeros((height,width,1),np.uint8)
'''
sobel
[ 1  2  1       [ 1  0  -1
  0  0  0         2  0  -2
 -1 -2 -1]        1  0  -1]
'''
for i in range(height-2):
    for j in range(width-2):
        gy = gray[i,j]*1+gray[i,j+1]*2+gray[i,j+2]*1-gray[i+2,j]*1-gray[i+2,j+1]*2-gray[i+2,j+2]*1
        gx = gray[i,j]*1-gray[i,j+2]*1+gray[i+1,j]*2-gray[i+1,j+2]*2+gray[i+2,j]*1-gray[i+2,j+2]*1
        grad = math.sqrt(gx**2+gy**2)
        if grad >50:
            dst[i,j] = 0
        else:
            dst[i,j] = 255
cv2.imshow('dst',dst)
cv2.waitKey(0)

请添加图片描述

2. 图片的映射

import cv2
import numpy as np

img = cv2.imread(filename='../anqila21.jpg',flags=1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
# b = b*1.5
# g = g*1.3
dst = np.zeros((height,width,3),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(0)

请添加图片描述
是不是觉得有点像电影里面的效果了呢?

3. 图片的油画效果

import cv2
import numpy as np

img = cv2.imread(filename='../anqila21.jpg',flags=1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
# gray
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  # 转换成灰度图片
dst = np.zeros((height,width,3),np.uint8)
flag = 2    # 参数,这个参数越小,油画效果与真实图片比较逼真
for i in range(flag,height-flag):
    for j in range(flag,width-flag):

        array1 = np.zeros(8,np.uint8)  # 灰度等级

        for m in range(-1*flag,flag):
            for n in range(-1*flag,flag):
                p1 = int(gray[i+m,j+n]/32)  # p1 0~3
                array1[p1]+=1
        currentMax = array1[0]
        l = 0
        for k in range(1,8):
            if currentMax<array1[k]:
                currentMax = array1[k]
                l = k

        for m in range(-1 * flag, flag):
            for n in range(-1 * flag, flag):
                if (l * 32) <= 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(0)

请添加图片描述
请添加图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:07:06  更:2021-11-25 08:07:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 4:12:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码