原图

图像灰度处理

#方式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)

灰度处理很重要,也是图像处理中的基础操作,在实际运用中要求实时性,涉及优化,比如:

  • 定点操作比浮点操作要快
  • +-比*/快,移位比*/快
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)/4gray=(b+(g<<1)+r)>>2dst[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)
彩色图 反转图

图片融合

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 边缘检测

步骤:灰度图,高斯滤波,canny

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边缘检测

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 -10 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]*1gx=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]=255else: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+150if newp>255:newp=255else:newp=0dst[i,j]=newp
cv2.imshow('dst',dst)
cv2.waitKey(0)
原图 浮雕效果

风格转换

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*bg=1.3*gif b>255:b=255if g>255:g=255dst[i,j]=(b,g,r)
cv2.imshow('dst',dst)
cv2.waitKey(0)
原图 颜色风格

python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)相关推荐

  1. 灰度拉伸python,Python OpenCV实例:图像灰度拉伸

    Python OpenCV实例:图像灰度拉伸 Python OpenCV实例:图像灰度拉伸 为什么80%的码农都做不了架构师?>>> #coding:utf-8 ''' 灰度拉伸 定 ...

  2. 用python怎么样实现图像二值化_使用Python+OpenCV如何实现图像二值化

    使用Python+OpenCV如何实现图像二值化 发布时间:2020-10-26 14:15:52 来源:亿速云 阅读:77 作者:蛋片鸡 这篇文章运用简单易懂的例子给大家介绍使用Python+Ope ...

  3. Python+OpenCV:立体图像深度图(Depth Map from Stereo Images)

    Python+OpenCV:立体图像深度图(Depth Map from Stereo Images) 理论 If we have two images of same scene, we can g ...

  4. Python+OpenCV:交互式图像前景提取(Interactive Foreground Extraction using GrabCut Algorithm)

    Python+OpenCV:交互式图像前景提取(Interactive Foreground Extraction using GrabCut Algorithm) ################# ...

  5. python opencv 实现从一个文件夹中读取图片做切割处理后放入另一个文件夹

    python opencv 实现从一个文件夹中读取图片切割处理后放入另一个文件夹. 实现的功能是把一个文件夹里的图片作处理,即把原图片中心为起点切割成1536*1536的图片,原图片必须大于这个的大小 ...

  6. 【图像处理】——Python+opencv实现提取图像的几何特征(面积、周长、细长度、区间占空比、重心、不变矩等)

    转载请注明详细地址 本文简单介绍了图像常见几何特征的概念以及求解方法 本文介绍了Python和opencv求解几何特征的常用方法 目录 其他形状外接轮廓的方法可以参考:<OpenCV-Pytho ...

  7. Python OpenCV 图像处理之 图像运算和图像位运算知识补充

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧.本篇博客是这个系列的第 51 篇. 该系列文章导航参考:https://blog.csdn.net/hihell/categ ...

  8. python opencv 读取png图像的alpha通道

    关于python opencv加载png图像的文章非常少,由官方文档得知加参数cv2.IMREAD_UNCHANGED即可 img = cv2.imread(filepath, cv2.IMREAD_ ...

  9. [python opencv 计算机视觉零基础到实战] 十、图片效果毛玻璃

    一.学习目标 了解高斯模糊的使用方法 了解毛玻璃的图片效果添加 了解如何自己做一个噪声图片 上一篇:[python opencv 计算机视觉零基础到实战] 九.模糊 如有错误欢迎指出~ 二.了解模糊与 ...

  10. 3灰度颜色反转毛玻璃融合边缘浮雕颜色油画

    图像特效 一.灰度处理1 法一 #imread #方法1 imread import cv2 img0 = cv2.imread('image0.jpg',0) img1 = cv2.imread(' ...

最新文章

  1. AFDetV2:重新思考点云检测方法中第二阶段检测器的必要性(CVPR2021)
  2. MFC中制作一个似命令行的输入框
  3. Spring Cloud的核心成员、以及架构实现详细介绍
  4. redis-full-check
  5. Python XML解析
  6. GDT蜘蛛侠 - 元搜索采集: 集成 百度,谷歌,搜搜,搜狗,有道 5大搜索引擎,其它可定制...
  7. 微软开始取消 Windows 10 对 32 位系统的支持
  8. 推荐一款接口 API 设计神器!
  9. 前端MVC学习总结(三)——AngularJS服务、路由、内置API、jQueryLite
  10. Java大数据-Week2-Day1 面向对象基础
  11. 阿里云Link Security为企业级区块链提供易用性安全解决方案
  12. linux work有关的命令,Linux执行后台work相关
  13. Apple Pay 详解
  14. 精益+敏捷,两大管理思路让研发效能「飞」起来
  15. MATLAB | MATLAB配色不够用 全网最全的colormap补充包来啦
  16. Node.js检查路径是文件还是目录
  17. 爬取电影天堂最新电影的名称和下载链接
  18. Fedora12 编译s3c2416 U-Boot1.3.4的Makefile和头文件
  19. 【泛微ecology】ecology的补丁包升级
  20. 探索者系列_百度百科

热门文章

  1. count(*)和count(1)和count(字段)的区别
  2. Windows xp 磁盘加密
  3. android设备操作(十一)
  4. 《IT通史》读后感一
  5. 浪潮刀片服务器型号,浪潮刀片服务器.pdf
  6. C++23种设计模式(22)-中介者模式
  7. 入侵oracle数据库时常用的操作命令整理
  8. 深度学习解决机器阅读理解任务的研究进展
  9. ppi 各代iphone_iPhone
  10. 电影最top《投名状》摘录