python实现浮雕效果的原理_python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)...
原图
图像灰度处理
#方式1
import cv2
#读取彩色原图
img0=cv2.imread('E:/python_cv/01.jpg',1)
#读取灰度图
img1=cv2.imread('E:/python_cv/01.jpg',0)
print(img0.shape)
print(img1.shape)
cv2.imshow('gary',img1)
cv2.waitKey(0)
#方式2
import cv2
#读取彩色原图
src=cv2.imread('E:/python_cv/01.jpg',1)
dst=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
cv2.imshow('gary',dst)
cv2.waitKey(0)
#方式3
import cv2
import numpy as np
img=cv2.imread('E:/python_cv/01.jpg',1)
img_info=img.shape
image_height=img_info[0]
image_weight=img_info[1]
dst=np.zeros((image_height,image_weight,3),np.uint8)
#当彩色图像三个通道的值都相同时,即为灰度图像
for i in range(image_height):
for j in range(image_weight):
(b,g,r)=img[i][j]
gray=(int(b)+int(g)+int(r))/3 #防止越界,转换类型
dst[i,j]=np.uint8(gray)
cv2.imshow('gary',dst)
cv2.waitKey(0)
#方式4
import cv2
import numpy as np
img=cv2.imread('E:/python_cv/01.jpg',1)
img_info=img.shape
image_height=img_info[0]
image_weight=img_info[1]
dst=np.zeros((image_height,image_weight,3),np.uint8)
#当彩色图像三个通道的值都相同时,即为灰度图像
for i in range(image_height):
for j in range(image_weight):
(b,g,r)=img[i][j]
gray=0.299*int(b)+0.587*int(g)+0.114*int(r)
dst[i,j]=np.uint8(gray)
cv2.imshow('gary',dst)
cv2.waitKey(0)
灰度处理很重要,也是图像处理中的基础操做,在实际运用中要求实时性,涉及优化,好比:python
定点操做比浮点操做要快
+-比*/快,移位比*/快
import cv2
import numpy as np
img=cv2.imread('E:/python_cv/01.jpg',1)
img_info=img.shape
image_height=img_info[0]
image_weight=img_info[1]
dst=np.zeros((image_height,image_weight,3),np.uint8)
#当彩色图像三个通道的值都相同时,即为灰度图像
for i in range(image_height):
for j in range(image_weight):
(b,g,r)=img[i][j]
# gray=0.299*int(b)+0.587*int(g)+0.114*int(r)
#优化
b=int(b)
g=int(g)
r=int(r)
# gray=(b+2*g+r)/4
gray=(b+(g<<1)+r)>>2
dst[i,j]=np.uint8(gray)
cv2.imshow('gary',dst)
cv2.waitKey(0)
颜色翻转
灰度图像素值为0到255,若当前的像素值为i,翻转事后为255-i
import cv2
import numpy as np
#读取彩色原图
src=cv2.imread('E:/python_cv/01.jpg',1)
gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
img_info=src.shape
image_height=img_info[0]
image_weight=img_info[1]
dst=np.zeros((image_height,image_weight,1),np.uint8)
for i in range(image_height):
for j in range(image_weight):
grayPixel=gray[i][j]
dst[i][j]=255-grayPixel
cv2.imshow('gary',dst)
cv2.waitKey(0)
原灰度图
反转灰度图
彩色图反转优化
import cv2
import numpy as np
#读取彩色原图
src=cv2.imread('E:/python_cv/01.jpg',1)
img_info=src.shape
image_height=img_info[0]
image_weight=img_info[1]
dst=np.zeros((image_height,image_weight,3),np.uint8)
for i in range(image_height):
for j in range(image_weight):
(b,g,r)=src[i][j]
dst[i][j]=(255-b,255-g,255-r)
cv2.imshow('src',src)
cv2.imshow('dst',dst)
cv2.waitKey(0)
彩色图
反转图
图片融合ui
import cv2
import numpy as np
#读取彩色原图
src=cv2.imread('E:/python_cv/01.jpg',1)
src1=cv2.imread('E:/python_cv/02.jpg',1)
img_info=src.shape
image_height=img_info[0]
image_weight=img_info[1]
roi_h=int(image_height/2)
roi_w=int(image_weight/2)
src_roi=src[0:roi_h,0:roi_w]
src1_roi=src1[0:roi_h,0:roi_w]
dst=np.zeros((roi_h,roi_w,3),np.uint8)
dst=cv2.addWeighted(src_roi,0.5,src1_roi,0.5,0)
cv2.imshow('dst',dst)
cv2.waitKey(0)
canny 边缘检测spa
步骤:灰度图,高斯滤波,canny3d
import cv2
import numpy as np
gray=cv2.imread('E:/python_cv/01.jpg',0)
img=cv2.GaussianBlur(gray,(3,3),0)
dst=cv2.Canny(img,50,50)
cv2.imshow('gray',gray)
cv2.imshow('gauss',img)
cv2.imshow('dst',dst)
cv2.waitKey(0)
灰度图
高斯滤波
canny
soble边缘检测code
import cv2
import numpy as np
import math
gray=cv2.imread('E:/python_cv/01.jpg',0)
imgInfo=gray.shape
height=imgInfo[0]
weight=imgInfo[1]
cv2.imshow('src',gray)
dst=np.zeros((height,weight,1),np.uint8)
'''
sobel
1.算子模板 2.图像卷积 3.阈值判决
竖直模板 水平模板
[1 2 1 [1 0 -1
0 0 0 2 0 -2
-1-2-1] 1 0 -1]
'''
for i in range(0,height-2):
for j in range(0,weight-2):
gy=gray[i,j]*1+gray[i,j+1]*2+gray[i,j+2]*1-gray[i+2,j]-2*gray[i+2,j+1]-gray[i+2,j+2]*1
gx=gray[i,j]*1-gray[i,j+2]+gray[i+1,j]*2-2*gray[i+1,j+2]+gray[i+2,j]-gray[i+2,j+2]
grad=math.sqrt(gx*gx+gy*gy)
if grad>50:
dst[i,j]=255
else:
dst[i,j]=0
cv2.imshow('dst',dst)
cv2.waitKey(0)
原图
sobel
import cv2
import numpy as np
gray=cv2.imread('E:/python_cv/01.jpg',0)
imgInfo=gray.shape
height=imgInfo[0]
weight=imgInfo[1]
#浮雕效果
dst=np.zeros((height,weight,1),np.uint8)
for i in range(0,height):
for j in range(0,weight-1):
gray0=gray[i,j]
gray1=gray[i,j+1]
newp=gray0-gray1+150
if newp>255:
newp=255
else:
newp=0
dst[i,j]=newp
cv2.imshow('dst',dst)
cv2.waitKey(0)
原图
浮雕效果
风格转换blog
import cv2
import numpy as np
img=cv2.imread('E:/python_cv/01.jpg',1)
imgInfo=img.shape
height=imgInfo[0]
weight=imgInfo[1]
cv2.imshow('src',img)
'''
颜色风格,rgb-->RGB
b=b*1.5
g=g*1.3
'''
dst=np.zeros((height,weight,3),np.uint8)
for i in range(0,height):
for j in range(0,weight):
(b,g,r)=img[i,j]
b=1.5*b
g=1.3*g
if b>255:
b=255
if g>255:
g=255
dst[i,j]=(b,g,r)
cv2.imshow('dst',dst)
cv2.waitKey(0)
原图
颜色风格
python实现浮雕效果的原理_python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)...相关推荐
- python颜色识别原理_python+opencv实现颜色检测、轮廓检测、颜色追踪
准备工作 python配置numpy和openCv库 读取图像和视频图像cv2.imread(路径) cv2.imshow(窗口名称,输出对象) cv2.waitkey(等待时间)import cv2 ...
- opencv把图片转换成二进制_Python+OpenCV实现将图像转换为二进制格式
Python+OpenCV实现将图像转换为二进制格式 发布时间:2020-09-20 20:30:58 来源:脚本之家 阅读:68 作者:大蛇王 在学习tensorflow的过程中,有一个问题,ten ...
- python列表的实现原理_Python列表对象实现原理
Python 列表对象实现原理 Python 中的列表基于 PyListObject 实现,列表支持元 素的插入.删除.更新操作,因此 PyListObject 是一个变长 对象(列表的长度随着元素的 ...
- python解释器的工作原理_Python GIL全局解释器锁详解(深度剖析)
通过前面的学习,我们了解了 Pyton 并发编程的特性以及什么是多线程编程.其实除此之外,Python 多线程还有一个很重要的知识点,就是本节要讲的 GIL. GIL,中文译为全局解释器锁.在讲解 G ...
- python compare函数_Python Opencv中用compareHist函数进行直方图比较对比图片
图像直方图 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的.纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比. 图像是由像素 ...
- python手机摄像头投测距_python opencv单目测距 小孔成像原理
python opencv单目测距 小孔成像原理 小孔成像原理 一 用相似三角形计算物体或者目标到相机的距离 我们将使用相似三角形来计算相机到一个已知的物体或者目标的距离. 相似三角形就是这么一回事: ...
- python调用摄像头录制视频_Python OpenCV使用摄像头捕获视频
我们知道,OpenCV是一款强大的跨平台的计算机视觉库,使用它能完成我们对于图像和视频处理的很多功能,今天,我们使用OpenCV来捕获计算机摄像头的视频. 使用OpenCV捕获摄像头视频 我们知道,视 ...
- python简单目标检测代码_Python Opencv实现单目标检测的示例代码
一 简介 目标检测即为在图像中找到自己感兴趣的部分,将其分割出来进行下一步操作,可避免背景的干扰.以下介绍几种基于opencv的单目标检测算法,算法总体思想先尽量将目标区域的像素值全置为1,背景区域全 ...
- python人脸识别门禁_Python+Opencv+Tkinter指纹识别与人脸识别的门禁兼考勤(一)
一.设计目标:旨在PC端上搭建一款具有指纹识别与人脸识别功能的门禁兼考勤系统.该系统同时具备普通用户模式.管理员模式与超级管理员模式,下面具体介绍每种模式下的功能. 1)普通用户模式 该模式可分为收集 ...
最新文章
- YSLOW法则中,为什么yahoo推荐用GET代替POST?
- 图像相似度计算之哈希值方法OpenCV实现
- C++读写ini配置文件GetPrivateProfileString()WritePrivateProfileString()
- 操作系统对比和未来展望
- 湖南铁路科技职业技术学院计算机等级,湖南铁路科技职业技术学院——高速铁路动车乘务专业...
- Sencha Touch 搭建命令
- java poi 读取excel 编码_Java使用POI 读取和写入Excel指南
- Bootstrap组件_路径导航,标签,徽章
- 使用JavaScript给对象修改注册监听器
- HDU 6750 Function(莫比乌斯反演)(2020百度之星初赛1)
- Linux基线合规检查中各文件的作用及配置脚本
- CSS 基础框盒模型介绍
- python新手入门代码-Python 新手入门习题及代码
- Pytorch中的强化学习
- KVM图形管理界面打不开(virt-manager 报错)
- codeIgniter3 学习笔记四(文件上传)
- 【蓝桥杯单片机组模块】15、PWM学习(总结版)
- Kylo 浏览器 值得一玩
- 2021 HTML面试题(最新)不定时更新
- 小米电视4A Android8,小米电视4A 删除内置应用及其去广告攻略
热门文章
- Android自定义控件(1)——湿度器
- mysql删除当前行 快捷_数据库-Mysql操作之Navicat快捷键操作
- vue中使用视频播放插件vue-video-player
- VDI(远程桌面)是什么?
- 大林算法计算机控制实验报告,计算机控制工程实验报告.docx
- 质优价廉的QCC3072 通话音质高保真的混合降噪方案
- 网络训练时候loss不下降
- java名片识别源码_名片识别
- 虚拟机安装Mac OS X雪豹(snow leopard)
- 计算机专业求职信英语,计算机专业的英语求职信.doc