早些时候实验的关于图像的知识,一直放着感觉发挥不出它的作用,故自己将它发上来,大家可以看看。

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图 针对某种颜色做提取、高斯模糊等等相关推荐

  1. 医学图像处理入门知识 | 格式DICOM,MHD+RAW | 坐标系 | ITK-SNAP | 重采样

    医学图像处理入门知识 引言 常见的医学图像格式 DICOM mhd+raw 坐标系 世界坐标体系 解剖学坐标体系 图像坐标体系 这三个坐标体系有什么关系呢?怎样转换呢? ITK-SNAP工具使用 基本 ...

  2. python 3.x 全栈开发从入门到精通_GitHub - cxinping/PythonFullStack: 《Python 3 全栈开发从入门到精通》配套代码...

    <Python 3 全栈开发从入门到精通> 为什么要编写本书? 本书作者均来自开发和教育第一线,具备丰富的实际研发和培训经验.在对学校和企业的培训中,针对学校和企业的实际开发需要,定制了全 ...

  3. python下的spectral模块(高光谱图像处理)

    Spectral Python (SPy)是一个用于处理高光谱图像数据的纯Python模块.它具有读取.显示.操作和分类高光谱图像的功能. 之所以用它是因为这个对多波段图像的支持更好 参考 一.SPy ...

  4. 自己总结的MySQL基础入门知识,附思维导图

    第一次写博文,问题点可能比较多,辛苦大家帮忙指正,感谢大家. MySQL基础入门知识 前言 一.数据库基础知识 1.什么是数据库 2.数据库的分类 3.数据库的常用语言 4.数据库的常用操作方式 5. ...

  5. #最全面# Python 下将 opencv MAT ( numpy ndarray ) 彩色 或 灰度 图像转化为 QImage 对象

    1. 直接将ndarray彩色图像转化为 QImage 对象: #解决中文路径下cv2无法读取的问题 #path为文件路径 colorimg = cv2.imdecode(np.fromfile(pa ...

  6. python与数据思维基础目录_python入门知识思维路线图及环境配置

    python知识准备 掌握Python基础语法,熟悉常用API,是后面进行自动化学习的必要条件. 本章节主要内容包括 python基本语法 常用数据结构 常用操作 面向对象编程 文件处理 数据库处理 ...

  7. Python学习周志—第一周(入门知识)

    变量和简单数据类型 使用方法修改字符串 title() 首字母大写 upper() 字母大写 lower() 字母小写 split() 通过指定分隔符对字符串进行切片 加号(+)来合并字符串 使用制表 ...

  8. 视频图像处理基础知识5(RGB与Ycbcr相互转换公式 )【转】

    转自:http://blog.csdn.net/Times_poem/article/details/51471438 版权声明:本文为博主原创文章,未经博主允许不得转载. 需求说明:视频处理算法基本 ...

  9. 视频图像处理基础知识5(RGB与Ycbcr相互转换公式 )

    需求说明:视频处理算法基本知识       第一部分:有参考出处的RGB与Ycbcr相互转换       第二部分:简单直接的RGB与Ycbcr相互转换       第三部分:优化乘法的RGB与Ycb ...

最新文章

  1. 实锤!沙特新规,出货箱单必须显示条形码,发票必须盖章!
  2. LeetCode每日一题 844. 比较含退格的字符串
  3. idal 创建springboot 项目_SpringBoot教程:Maven方式创建SpringBoot项目
  4. 查找一个类的好方法,可节省做很多层的传递
  5. C++ Primer Plus学习(八)——函数进阶
  6. android系统中使用ksoap2-android客户端库操作Asp.net WebService
  7. iScroll示例,下拉刷新,上拉刷新
  8. Tableau 自定义调色板及应用全流程讲解【保姆级】
  9. N9(Meego系统)删除自带软件方法------笔者亲测,可行,无副作用
  10. react引入本地mp4视频
  11. Word操作之图表目录自动生成
  12. Amy Cuddy: Your body language shapes who you are
  13. 目标跟踪入门:使用OpenCV实现质心跟踪
  14. 关于Quartus+Modelsim 门级仿真 Warning (vopt-2216) Cannot find instance 'NA' specified in sdf.的解决办法...
  15. js 时间转东八区_JS时区时间转换详解
  16. 如何将分表汇总到总表_如何把多个Excel表格合并到一起,分表变,总表也自动更新?...
  17. Android 自定义锁屏图案 View
  18. 华为RH2288 V3 服务器 配置raid 删除raid配置
  19. 网速由100M变成10M的原因与解决方法
  20. 小学生python编程写游戏_小学生开始学Python,开发AI的首选编程语言:推荐一波Python书单...

热门文章

  1. 连续变焦光学系统设计方法
  2. helpdesk常见软件故障与解决方法
  3. 《图解TCPIP》知识学习(1.2):计算机与网络发展的7个阶段
  4. 华为OD机试 - Excel单元格数值统计(Java JS Python)
  5. 数美科技推出未成年人网络环境保护方案 护航未成年人健康成长
  6. 06 初等矩阵和矩阵的可逆性
  7. centos7动态ip的问题
  8. htc手机一直android升级,不放弃!HTC U11 Life获得Android 10更新
  9. 牛客刷题难点易错点总结-操作系统4
  10. Set集合和数组转换