图像特效

一、灰度处理1

  • 法一
#imread
#方法1 imread
import cv2
img0 = cv2.imread('image0.jpg',0)
img1 = cv2.imread('image0.jpg',1)
print(img0.shape)
print(img1.shape) #有色图片三维 深度信息
cv2.imshow('src',img0)
cv2.waitKey(0)
  • 结果
(547, 730)
(547, 730, 3)
  • 法二
#方法2 cvtColor函数方法
import cv2
img = cv2.imread('image1.jpg',1)
dst = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 颜色空间转换 1 原始data 2 BGR gray
cv2.imshow('dst',dst)
cv2.waitKey(0)
  • 法三
#法三 RGB取均值
import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
# RGB R=G=B = gray  (R+G+B)/3 灰度图像RGB相同
dst = np.zeros((height,width,3),np.uint8) # 3深度
# 遍历矩阵所有像素
for i in range(0,height):for j in range(0,width):(b,g,r) = img[i,j] # bgr读取出来是uint8类型gray = (int(b)+int(g)+int(r))/3 #均值计算 强制转化防止越界dst[i,j] = np.uint8(gray)
cv2.imshow('dst',dst)
cv2.waitKey(0)
  • 法四
#方法4 新公式gray = r*0.299+g*0.587+b*0.114
import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[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 = int(b)g = int(g)r = int(r)gray = r*0.299+g*0.587+b*0.114  #新的公式dst[i,j] = np.uint8(gray)
cv2.imshow('dst',dst)
cv2.waitKey(0)

二、灰度处理算法优化

# 1 灰度是最重要
# 2 很多图像的基础基础 如图像的边缘检测、人脸识别、行人识别
# 3 强调算法实时性
# 运算速度由快到慢 定点-》浮点 +- */ >>
# 优化公式
# r*0.299+g*0.587+b*0.114
# 浮点转化为定点 加减乘除转为移位运算
import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
# RGB R=G=B = gray  (R+G+B)/3
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 = int(b)g = int(g)r = int(r)##gray = (r*1+g*2+b*1)/4 # 乘的数据越大越精gray = (r+(g<<1)+b)>>2 #  再优化;用移位算法实现上面的公式dst[i,j] = np.uint8(gray)
cv2.imshow('dst',dst)
cv2.waitKey(0)

三、颜色反转(当前像素最大值255减去当前像素值)

  • 灰度图像的颜色反转
# 灰度图像的颜色反转 0-255 255-当前
import cv2
import numpy as np
img = cv2.imread('image0.jpg',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) # 灰度图片 深度1 1种颜色
for i in range(0,height):for j in range(0,width):grayPixel = gray[i,j] # 定义像素 获取当前灰度值dst[i,j] = 255-grayPixel # 定义新图dst
cv2.imshow('dst',dst)
cv2.waitKey(0)
  • 彩色图像的颜色反转
#彩色图像的颜色反转 RGB 255-R=newR
#0-255 255-当前
import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[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] # 读取颜色dst[i,j] = (255-b,255-g,255-r) # 公式
cv2.imshow('dst',dst)
cv2.waitKey(0)

四、图片马赛克效果

  • 代码
#马赛克原理 某一范围内的像素颜色一致 像素替换
import cv2
import numpy as np
img = cv2.imread('image1.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
# 遍历 定义一个区域显示马赛克
for m in range(100,300):for n in range(100,200):# 选中元素pixel替换10*10的小矩阵# if 每隔10个选取一个像素点 k每10个像素颜色一样if m%10 == 0 and n%10==0:# 替换for i in range(0,10):for j in range(0,10):(b,g,r) = img[m,n] # 读取像素img[i+m,j+n] = (b,g,r) #m n最外层的
cv2.imshow('dst',img)
cv2.waitKey(0)

五、图片毛玻璃效果

# 原理用周围随机颜色替换
import cv2
import numpy as np
import random
img = cv2.imread('image0.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros((height,width,3),np.uint8)
mm = 8
# 减 nm 是为了防止越界
for m in range(0,height-mm):for n in range(0,width-mm):index = int(random.random()*8) # 随机数 0-8(b,g,r) = img[m+index,n+index]dst[m,n] = (b,g,r)
cv2.imshow('dst',dst)
cv2.waitKey(0)

六、图片融合

# 公式法 dst  = src1*a+src2*(1-a)
import cv2
import numpy as np
# 读取图片 并信息获取
img0 = cv2.imread('image0.jpg',1)
img1 = cv2.imread('image1.jpg',1)
imgInfo = img0.shape
height = imgInfo[0]
width = imgInfo[1]
# ROI 高度宽度改变 选取图片需要大于第一张图片的一半 roiH roiW
roiH = int(height/2)
roiW = int(width/2)
img0ROI = img0[0:roiH,0:roiW]
img1ROI = img1[0:roiH,0:roiW]
# dst
dst = np.zeros((roiH,roiW,3),np.uint8)
dst = cv2.addWeighted(img0ROI,0.5,img1ROI,0.5,0)# API 权重相加 add src1*a+src2*(1-a) 0.5 为权重
# 1 src1 2 a 3 src2 4 1-a
cv2.imshow('dst',dst)
cv2.waitKey(0)

七、图片边缘检测

  • 实质:卷积运算
  • 步骤:1. 灰度处理,基于灰度图像 2. 高斯滤波(防止噪声干扰) 3. 调用canny方法
  • API方式
import cv2
import numpy as np
import random
img = cv2.imread('image0.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
cv2.imshow('src',img)
#canny 1 gray 2 高斯 3 canny
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 灰度处理,基于灰度图像
imgG = cv2.GaussianBlur(gray,(3,3),0) # 高斯滤波(防止噪声干扰)
# 图片卷积后大于门限则为边缘点  否则为非边缘点
dst = cv2.Canny(img,50,50) #参数1原图 th 门限
cv2.imshow('dst',dst)
cv2.waitKey(0) # 暂停
  • 原码方式
  • 原理:
sobel
1 算子模版3x3矩阵
模板1
[1 2 1          0 0 0
-1 -2 -1 ]
模板2
[ 1 0 -12 0 -21 0 -1 ]
2 图片卷积[1 2 3 4] [a b c d] a*1+b*2+c*3+d*4 = dst
3 阈值判决,计算梯度 sqrt(a*a+b*b) = f>th
  • 代码
import cv2
import numpy as np
import random
import math
img = cv2.imread('image0.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
cv2.imshow('src',img)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst = np.zeros((height,width,1),np.uint8) # 灰度1
# 卷积运算 会溢出 要-2
for i in range(0,height-2):for j in range(0,width-2):# 利用模板1计算ygy = 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# 利用模板2计算xgx = gray[i,j]+gray[i+1,j]*2+gray[i+2,j]-gray[i,j+2]-gray[i+1,j+2]*2-gray[i+2,j+2]# 定义梯度grad = math.sqrt(gx*gx+gy*gy)# 阈值if grad>50:dst[i,j] = 255else:dst[i,j] = 0
cv2.imshow('dst',dst)
cv2.waitKey(0)

八、图片浮雕效果

  • 每一个像素值等于相邻像素值之差+恒定值
  • 相邻像素值之差突出灰度图片边缘特征
  • 恒定值增强浮雕灰度等级
import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# newP = gray0-gray1+150
dst = np.zeros((height,width,1),np.uint8)
# 遍历 width-1
for i in range(0,height):for j in range(0,width-1):# 操作过程中防止溢出 强制类型转换grayP0 = int(gray[i,j])# j+1 由于矩阵纵坐标+1 width-1grayP1 = int(gray[i,j+1])newP = grayP0-grayP1+150 # 核心公式if newP > 255:newP = 255if newP < 0:newP = 0dst[i,j] = newP
cv2.imshow('dst',dst)
cv2.waitKey(0)

九、图片颜色风格

# 突出原图的某种颜色
import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
cv2.imshow('src',img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
#rgb -》RGB new “蓝色”
# b=b*1.5 颜色成倍数增强
# g = g*1.3
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.5g = g*1.3if b>255:b = 255if g>255:g = 255dst[i,j]=(b,g,r)
cv2.imshow('dst',dst)
cv2.waitKey(0)

十、图片油画效果

  • 步骤

    1. 转为灰度图像

    2. 图片分割为小方块,并统计方块灰度值

    3. 灰度等级划分:0-255的灰度值处理为子集,并映射

    4. 统计:寻找每个方块灰度等级最多像素,并求均值

    5. 统计均值代替原像素值,实现优化

#1 gray 2 7*7 10*10 3 0-255 256 4 640-63 64-127
# 3 10 0-63 99
# 4 count 5 dst = resultimport cv2
import numpy as np
# image00小图像便于计算展示
img = cv2.imread('image00.jpg',1)
cv2.imshow('src',img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #灰度化
dst = np.zeros((height,width,3),np.uint8)
# 遍历数据 height-4
for i in range(4,height-4):for j in range(4,width-4):# 装载8个等级的灰度个数array1 = np.zeros(8,np.uint8)# 定义8x8小方块for m in range(-4,4):for n in range(-4,4):p1 = int(gray[i+m,j+n]/32) # i+m 行array1[p1] = array1[p1]+1# 获取最大值currentMax = array1[0]l = 0# 遍历求取最大值for k in range(0,8):if currentMax<array1[k]:currentMax = array1[k]l = k# 遍历小方块 简化 求均值for m in range(-4,4):for n in range(-4,4):# 像素值在某个段内就取出 没有break 所以得到小方块内最后一个满足条件的像素值# 32 灰度等级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(0)

3灰度颜色反转毛玻璃融合边缘浮雕颜色油画相关推荐

  1. 安卓5.0新加辅助功能(高对比性文字/色彩校正/颜色反转)学习

    摘要 在安卓L版本中,辅助设置中新加了3个功能,分别是高对比性文字,颜色反转,色彩校正 高对比性文字 先来看看google是怎么说这个功能的 This information applies only ...

  2. 【OpenCV】颜色反转算法

    [OpenCV]颜色反转算法 导读 1. 灰度图像颜色反转 2. 彩色图像颜色反转 导读 灰度图像颜色反转 彩色图像颜色反转 1. 灰度图像颜色反转 import cv2 import numpy a ...

  3. 计算机视觉:图片的灰度处理和颜色反转

    1.灰度处理 1.1 方法1 还记得我的这篇博客的这个注释吗? 也就是方法cv2.imread(),里面有两个参数,第一个参数为图片的路径,第二个参数为是否为彩色图片,如果把第二个参数改为0,会怎么样 ...

  4. opencv图片灰度处理的方法和颜色反转

    图片的灰度处理 方法1 import cv2 img0 = cv2.imread("11111.jpg",0) # 将图片读取进来 img1 = cv2.imread(" ...

  5. 如何将一张灰度图颜色反转

    在训练模型的时候,我也不知道动了哪里,显著性检测结果,本来是显著性的地方为白色(即权重大点),非显著区域为黑色,但是我的结果却搞好反过来. 一部分图片已经生成好了,为了节约时间,只能自己进行处理.另一 ...

  6. Python实现图像八大特效(毛玻璃、浮雕、油画、马赛克等)

    Python实现图像八大特效:毛玻璃.浮雕.油画.马赛克.素描.怀旧.流年.卡通.可自由切换调用.程序运行截图(毛玻璃特效): ![在这里插入图片描述](https://img-blog.csdnim ...

  7. OpenCV图像颜色反转算法

    前言 图像颜色的反转,比较简单的思路就是使用255减去当前值,从而得到反转后的图像.原始图片: 1.灰度图像的颜色反转 import cv2 import numpy as np# 灰度 0-255 ...

  8. 图片颜色反转算法|python

    算法优化 浮点运算转换为定点运算比较慢 移位运算比定点运算快 图片颜色反转 灰度图片颜色反转 # 灰度图片翻转 import cv2 import numpy as np img = cv2.imre ...

  9. 黑白图片颜色反转并保存

    将图像的黑白颜色反转并保存 import cv2 # opencv读取图像 img = cv2.imread(r'E:\Python-workspace\OpenCV\OpenCV/YY.png', ...

最新文章

  1. GDI+编程说明及小结
  2. c语言农夫过河游戏代码解释,农夫过河C++代码
  3. JDeps入门–分析项目的依赖关系
  4. 深度学习之卷积神经网络 ZF Net
  5. 网络中pkt是什么意思_网络流行语Cp、磕么?是什么意思?
  6. Kubernetes 详解
  7. Vue 服务端渲染(SSR)、Nuxt.js - 从入门到实践
  8. 多路复用输入/输出 ---- select
  9. 2021-01-08 PMP 群内练习题 - 光环
  10. Sketch for mac|矢量绘图设计
  11. mysql查询年龄段多少人_mysql中一张(居民)表按年龄段查询数据
  12. 爬虫pyquery查找节点
  13. verilog实验1:基于FPGA蜂鸣器演奏乐曲并数码管显示
  14. 【电脑常用办公软件】万彩办公大师教程丨截屏大师工具的应用
  15. 真实评测:华为nova8和红米k30至尊版哪个好-参数区别对比
  16. 不正确的c语言语句是,【单选题】下列不正确的C语言语句是( )。 A. x=y=5; B. x=1,y=2; C. y=int x; D. x++;...
  17. 【目标管理】OKR如何助力目标管理?
  18. 计算机配件价格报告,2021年电脑配件行业趋势_2021年电脑配件行业趋势报告_中国报告大厅...
  19. 海思OMX代码分析---技术片段
  20. YARN框架学习思维导图

热门文章

  1. 网易2018校招——04.游历魔法王国
  2. 购买Microsoft Technet订阅,免费获得微软几乎所有的产品序列号“用于评估”,...
  3. 赛效:怎么将视频格式转换成MP4
  4. 考研上岸学长的备考经验心得
  5. 【paper 学习】2、Wi-Fi sensing: applications and challenges
  6. 这个冬季,谁温暖了我的心?
  7. DeprecationWarning: use options instead of chrome_options
  8. Vue进阶(三十七):created、mounted等钩子函数整理
  9. 蓝桥杯第六届省赛试题——温度记录器
  10. ClientID的用法