python下最全的cv2图像处理入门知识!!!!灰度图 RGB图 针对某种颜色做提取、高斯模糊等等
早些时候实验的关于图像的知识,一直放着感觉发挥不出它的作用,故自己将它发上来,大家可以看看。
1.头文件
import cv2
import numpy
from scipy.misc import imresize, imsave
from PIL import Image,ImageFilter
from matplotlib import pyplot
依赖 包什么的自己安装
2.原始图像的输出
FilePath = r"C:\Users\Administrator\Desktop\pic.jpg"image = cv2.imread(FilePath)
cv2.imshow("origin",image)
3.灰度图
GRAY = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow("GRAY",GRAY)
4.RGB图
img = imresize(image,size=(64,64),mode='RGB')
cv2.imshow("RGB",image)
5. 针对某种颜色做提取时会转换到HSV颜色空间里面来处理
HSV = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
# 提取蓝色
LowerBlue = numpy.array([100, 100, 50])
UpperBlue = numpy.array([130, 255, 255])
mask = cv2.inRange(HSV, LowerBlue, UpperBlue)
cv2.imshow("HSV",HSV)
6.# 色调 饱和度 亮度
H, S, V = cv2.split(HSV)
cv2.imshow("H",H)
cv2.imshow("S",S)
cv2.imshow("V",V)
7###################高斯模糊############## #
这里(5, 5)表示高斯矩阵的长与宽都是5(只能为单数),标准差取5时OpenCV会根据高斯矩阵的尺寸自己计算。 # 概括地讲,高斯矩阵的尺寸越大,标准差越大,处理过的图像模糊程度越大。
这里的由于我给的尺寸比较小,显示的不够模糊,可能和原图像区别不大。大家可以自己试着调大
BLUR = cv2.GaussianBlur(image,(5,5),0.5)
cv2.imshow("BLUR",BLUR)
8.
#######################浮雕Relief与雕刻Engrave###########################
# 原理: 根据像素与周围像素的差值确定滤波后的像素值,
# 差别较大的像素(边缘点通常像素差别较大)像素值较大,
# 在灰度图中表现为较亮,边缘凸显,形成浮雕状
# 注意在灰度图的情况下识别
Filter_Relief = numpy.array([[1,0],[0,-1]])
Filter_Engrave = numpy.array([[-1,0],[0,1]])
def together(Filter):# sp = numpy.array(image)sp = numpy.shape(image)row = int (sp[0])col = int (sp[1])new_image = numpy.zeros([row,col],dtype=numpy.uint8)for i in range(row-1):for j in range(col-1):new_value = numpy.sum(GRAY[i:i+2,j:j+2]*Filter)+128if new_value >255:new_value = 255if new_value < 0:new_value = 0else:passnew_image[i,j] = new_valuereturn new_image
9.############浮雕——可以理解为黑色的依然突出##############
cv2.imshow("Relief",together(Filter_Relief))
10############雕刻——可以理解为白色突出##############
cv2.imshow("Engrave",together(Filter_Engrave))
11
###########################图片的轮廓##########################
# 对象是二值化图片,
# 图片的二值化:将阈值设置为50,阈值类型为cv2.THRESH_BINARY,则灰度在大于50的像素其值将设置为255,其它像素设置为0
# 函数 : contours, hierarchy = cv2.findContours(image, mode, method)
# mode : 轮廓检索模式 method : 轮廓的近似方法
# contours : 轮廓 hierarchy : 图像的拓扑信息(轮廓层次)
retval,binary = cv2.threshold(GRAY,100,255,cv2.THRESH_BINARY)
contours,hierachy = cv2.findContours(binary,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE)
Profile = cv2.drawContours(image,contours,-1,(0,0,0),1)
cv2.imshow("Profile",Profile)
12
############################图片的轮廓——通过傅里叶变换算法进行图片轮廓提取##########################
F_one = numpy.fft.fft2(image)
F_shift = numpy.fft.fftshift(F_one)
sp = numpy.shape(image)
rows = int(sp[0])
cols = int(sp[1])
crow,ccol = rows//2,cols//2
for i in range(crow-30, crow+30):for j in range(ccol-30, ccol+30):F_shift [i][j] = 0.0
F_ishitf = numpy.fft.ifftshift(F_shift)
# 通过高通滤波
img_back = numpy.fft.ifft2(F_ishitf)
# 去绝对值
img_back = numpy.abs(img_back)
#先对灰度图像进行伽马变换,以提升暗部细节
sp = numpy.shape(img_back)
rows = int (sp[0])
cols = int (sp[1])
for i in range(rows):for j in range(cols):img_back[i][j]=5.0*pow(img_back[i][j],0.7)#这个参数是手动调出来的,根据不同的图片,可以选择不同的数值
#对灰度图像进行反转
# for i in range(rows):
# for j in range(cols):
# img_back[i][j]=255-img_back[i][j]
cv2.imshow("HPF",img_back)
至此,整理结束!所有完整代码会在下面给出:
所有代码:
import cv2
import numpy
from scipy.misc import imresize, imsave
from PIL import Image,ImageFilter
from matplotlib import pyplot
FilePath = r"C:\Users\Administrator\Desktop\pic.jpg"image = cv2.imread(FilePath)
cv2.imshow("origin",image)
# 灰度图
GRAY = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow("GRAY",GRAY)
HSV = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
#RGB图
img = imresize(image,size=(64,64),mode='RGB')
cv2.imshow("RGB",image)
# 针对某种颜色做提取时会转换到HSV颜色空间里面来处理
# 提取蓝色
LowerBlue = numpy.array([100, 100, 50])
UpperBlue = numpy.array([130, 255, 255])
mask = cv2.inRange(HSV, LowerBlue, UpperBlue)
cv2.imshow("HSV",HSV)
# 色调 饱和度 亮度
H, S, V = cv2.split(HSV)
cv2.imshow("H",H)
cv2.imshow("S",S)
cv2.imshow("V",V)
# retval, im_at_fixed = cv2.threshold(V, 80, 255, cv2.THRESH_BINARY)
# 将阈值设置为50,阈值类型为cv2.THRESH_BINARY,则灰度在大于50的像素其值将设置为255,其它像素设置为0
# cv2.imshow("iamge4", im_at_fixed)
###################高斯模糊##############
# 这里(5, 5)表示高斯矩阵的长与宽都是5(只能为单数),标准差取5时OpenCV会根据高斯矩阵的尺寸自己计算。
# 概括地讲,高斯矩阵的尺寸越大,标准差越大,处理过的图像模糊程度越大。
BLUR = cv2.GaussianBlur(image,(5,5),0.5)
cv2.imshow("BLUR",BLUR)
#######################浮雕Relief与雕刻Engrave###########################
# 原理: 根据像素与周围像素的差值确定滤波后的像素值,
# 差别较大的像素(边缘点通常像素差别较大)像素值较大,
# 在灰度图中表现为较亮,边缘凸显,形成浮雕状
# 注意在灰度图的情况下识别
Filter_Relief = numpy.array([[1,0],[0,-1]])
Filter_Engrave = numpy.array([[-1,0],[0,1]])
def together(Filter):# sp = numpy.array(image)sp = numpy.shape(image)row = int (sp[0])col = int (sp[1])new_image = numpy.zeros([row,col],dtype=numpy.uint8)for i in range(row-1):for j in range(col-1):new_value = numpy.sum(GRAY[i:i+2,j:j+2]*Filter)+128if new_value >255:new_value = 255if new_value < 0:new_value = 0else:passnew_image[i,j] = new_valuereturn new_image
############浮雕——可以理解为黑色的依然突出##############
cv2.imshow("Relief",together(Filter_Relief))
############雕刻——可以理解为白色突出##############
cv2.imshow("Engrave",together(Filter_Engrave))
###########################图片的轮廓##########################
# 对象是二值化图片,
# 图片的二值化:将阈值设置为50,阈值类型为cv2.THRESH_BINARY,则灰度在大于50的像素其值将设置为255,其它像素设置为0
# 函数 : contours, hierarchy = cv2.findContours(image, mode, method)
# mode : 轮廓检索模式 method : 轮廓的近似方法
# contours : 轮廓 hierarchy : 图像的拓扑信息(轮廓层次)
retval,binary = cv2.threshold(GRAY,100,255,cv2.THRESH_BINARY)
contours,hierachy = cv2.findContours(binary,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE)
Profile = cv2.drawContours(image,contours,-1,(0,0,0),1)
cv2.imshow("Profile",Profile)
############################图片的轮廓——通过傅里叶变换算法进行图片轮廓提取##########################
F_one = numpy.fft.fft2(image)
F_shift = numpy.fft.fftshift(F_one)
sp = numpy.shape(image)
rows = int(sp[0])
cols = int(sp[1])
crow,ccol = rows//2,cols//2
for i in range(crow-30, crow+30):for j in range(ccol-30, ccol+30):F_shift [i][j] = 0.0
F_ishitf = numpy.fft.ifftshift(F_shift)
# 通过高通滤波
img_back = numpy.fft.ifft2(F_ishitf)
# 去绝对值
img_back = numpy.abs(img_back)
#先对灰度图像进行伽马变换,以提升暗部细节
sp = numpy.shape(img_back)
rows = int (sp[0])
cols = int (sp[1])
for i in range(rows):for j in range(cols):img_back[i][j]=5.0*pow(img_back[i][j],0.7)#这个参数是手动调出来的,根据不同的图片,可以选择不同的数值
#对灰度图像进行反转
# for i in range(rows):
# for j in range(cols):
# img_back[i][j]=255-img_back[i][j]
cv2.imshow("HPF",img_back)cv2.waitKey(0)
cv2.destroyAllWindows()
python下最全的cv2图像处理入门知识!!!!灰度图 RGB图 针对某种颜色做提取、高斯模糊等等相关推荐
- 医学图像处理入门知识 | 格式DICOM,MHD+RAW | 坐标系 | ITK-SNAP | 重采样
医学图像处理入门知识 引言 常见的医学图像格式 DICOM mhd+raw 坐标系 世界坐标体系 解剖学坐标体系 图像坐标体系 这三个坐标体系有什么关系呢?怎样转换呢? ITK-SNAP工具使用 基本 ...
- python 3.x 全栈开发从入门到精通_GitHub - cxinping/PythonFullStack: 《Python 3 全栈开发从入门到精通》配套代码...
<Python 3 全栈开发从入门到精通> 为什么要编写本书? 本书作者均来自开发和教育第一线,具备丰富的实际研发和培训经验.在对学校和企业的培训中,针对学校和企业的实际开发需要,定制了全 ...
- python下的spectral模块(高光谱图像处理)
Spectral Python (SPy)是一个用于处理高光谱图像数据的纯Python模块.它具有读取.显示.操作和分类高光谱图像的功能. 之所以用它是因为这个对多波段图像的支持更好 参考 一.SPy ...
- 自己总结的MySQL基础入门知识,附思维导图
第一次写博文,问题点可能比较多,辛苦大家帮忙指正,感谢大家. MySQL基础入门知识 前言 一.数据库基础知识 1.什么是数据库 2.数据库的分类 3.数据库的常用语言 4.数据库的常用操作方式 5. ...
- #最全面# Python 下将 opencv MAT ( numpy ndarray ) 彩色 或 灰度 图像转化为 QImage 对象
1. 直接将ndarray彩色图像转化为 QImage 对象: #解决中文路径下cv2无法读取的问题 #path为文件路径 colorimg = cv2.imdecode(np.fromfile(pa ...
- python与数据思维基础目录_python入门知识思维路线图及环境配置
python知识准备 掌握Python基础语法,熟悉常用API,是后面进行自动化学习的必要条件. 本章节主要内容包括 python基本语法 常用数据结构 常用操作 面向对象编程 文件处理 数据库处理 ...
- Python学习周志—第一周(入门知识)
变量和简单数据类型 使用方法修改字符串 title() 首字母大写 upper() 字母大写 lower() 字母小写 split() 通过指定分隔符对字符串进行切片 加号(+)来合并字符串 使用制表 ...
- 视频图像处理基础知识5(RGB与Ycbcr相互转换公式 )【转】
转自:http://blog.csdn.net/Times_poem/article/details/51471438 版权声明:本文为博主原创文章,未经博主允许不得转载. 需求说明:视频处理算法基本 ...
- 视频图像处理基础知识5(RGB与Ycbcr相互转换公式 )
需求说明:视频处理算法基本知识 第一部分:有参考出处的RGB与Ycbcr相互转换 第二部分:简单直接的RGB与Ycbcr相互转换 第三部分:优化乘法的RGB与Ycb ...
最新文章
- 实锤!沙特新规,出货箱单必须显示条形码,发票必须盖章!
- LeetCode每日一题 844. 比较含退格的字符串
- idal 创建springboot 项目_SpringBoot教程:Maven方式创建SpringBoot项目
- 查找一个类的好方法,可节省做很多层的传递
- C++ Primer Plus学习(八)——函数进阶
- android系统中使用ksoap2-android客户端库操作Asp.net WebService
- iScroll示例,下拉刷新,上拉刷新
- Tableau 自定义调色板及应用全流程讲解【保姆级】
- N9(Meego系统)删除自带软件方法------笔者亲测,可行,无副作用
- react引入本地mp4视频
- Word操作之图表目录自动生成
- Amy Cuddy: Your body language shapes who you are
- 目标跟踪入门:使用OpenCV实现质心跟踪
- 关于Quartus+Modelsim 门级仿真 Warning (vopt-2216) Cannot find instance 'NA' specified in sdf.的解决办法...
- js 时间转东八区_JS时区时间转换详解
- 如何将分表汇总到总表_如何把多个Excel表格合并到一起,分表变,总表也自动更新?...
- Android 自定义锁屏图案 View
- 华为RH2288 V3 服务器 配置raid 删除raid配置
- 网速由100M变成10M的原因与解决方法
- 小学生python编程写游戏_小学生开始学Python,开发AI的首选编程语言:推荐一波Python书单...