python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘

python opencv

1,读取图像

2,图像变矩阵

3,图像转灰度图像

4,彩色图像是3D数组

5,灰度图像是2D数组

6,彩色图像是3个2D数组

7,彩色图像有3个通道,提取3个通道

#Copyright

'''熟悉opencv库'''

import cv2

import numpy as np

img=cv2.imread('D:/python_examples/mei_hua1.jpeg')

'''显示彩色图像 '''

#cv2.imshow("img",img)

#cv2.waitKey(0)

gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

''' 显示灰度图像'''

#cv2.imshow("gray",gray)

#cv2.waitKey(0)

'''得到了图像的大小 '''

rows,cols,_=img.shape

print(rows,cols)

'''初始化一个大小一样的图像,元素初始化为0 '''

created=np.zeros((rows,cols))

''' for in 语句,遍历数组,但不能修改数组'''

for i in img:

for j in i:

#print(j)

pass

'''给数组赋值 '''

for i in range(0,rows):

for j in range(0,cols):

created[i,j]=img[i,j,2]#第三个参数,可以是0,1,2分别表示3个通道

print(created.shape)#创建的图像大小

'''必须加这一条语句,否则无法正确显示图像 '''

created=created.astype(np.uint8)#转换类型,才能正确的显示图像

cv2.imshow('created',created)

cv2.imwrite('D:/python_examples/created.jpg',created)

cv2.waitKey(0)

通道0

通道1

通道2

总结:

1个彩色图像,可以分解为3个灰度图像

3个灰度图像合起来是一个彩色图像

通道2图像,观察到花很白。如果

图像很白,说明对应的像素值大。

所以,做一个二值处理。

当像素值大于180,显示255

当像素值小于等于180,显示为0

created[created>180]=255

created[created<=180]=0

这个图像就是2值图像。

什么是2值图像,就是里面只有黑和白。

通道3变成了2值图像以后,有什么变化。

在通道3,

看到有花,有枝条,有朦胧的一个背景。

在二值图像,

就看到了花。

花尾巴部分,变成了白色,原来是灰色。

枝条没有了。

朦胧的背景也没有了

所以,二值图像,消除了枝条。

消除了朦胧的背景。

只显示了我们关心的花。

仔细观察图像变化,很重要!

对于二值图像,显示边缘。

什么是边缘。

举例:

000011100

左边连续的0,都是黑

所以0-0=0

右边-左边

01

左边是0,右边是1

这里就是边缘了

右边-左边=1

111连续的1,都是白色

10

这里是边缘,因为从1变0

00

都是黑

按照这个道理。

修改二值图像,提取边缘

for i in range(0,rows):

for j in range(0,cols-1):

#created[i,j]=created[i,j+1]-created[i,j]# 0-0 255-255 255-0 0-255

if(created[i,j+1]<=created[i,j]):

created[i,j]=0

else:

created[i,j]=255

现在图像里面,只有一些白色的线条。

白色的面积小了很多了。

而且这些白色线条,组成了花的轮廓。

for i in range(0,rows):

for j in range(0,cols-1):

#created[i,j]=created[i,j+1]-created[i,j]# 0-0 255-255 255-0 0-255

if(created[i,j+1]>=created[i,j]):

created[i,j]=0

else:

created[i,j]=255

读者可以更换其他图像试试,看看效果

总结:

对图像处理的步骤

1,彩色图像

2,提取3个通道

3,把第三通道的图像做二值化,阈值自己可以调整的

4,把二值化图像,提取了边缘

python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...相关推荐

  1. python打出由边框包围的_python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)...

    图像边框的实现 图像边框设计的主要函数 cv.copyMakeBorder()--实现边框填充 主要参数如下: 参数一:源图像--如:读取的img 参数二--参数五分别是:上下左右边的宽度--单位:像 ...

  2. python图片保存为txt文件_python + opencv实现提取png图像的像素信息并存储到txt文件中(附安装指导)...

    相关库安装指导: 这里我们需要 opencv_python,numpy,matplotlib库,另外我用的是python3.6.1版本. 一般库大家都是用pip install命令安装的,不过不知道为 ...

  3. python opencv图片旋转180度_Python opencv图像镜像翻转

    最近在训练CNN网络,需要对数据进行扩充,于是想做一下图像的镜像翻转,主要参考了博客: 不过我发现博主使用的是opencv老版本了,现在大家都是cv2了,因此我对博主的代码进行了必要的修改. 首先,说 ...

  4. python数字图像处理、色彩空间类型转换_Python+OpenCV图像处理—— 色彩空间转换...

    一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...

  5. python安装cv2模块的方法_Python opencv模块cv2安装和部分函数使用

    Python opencv模块cv2安装和部分函数使用 前几天做了一下验证码识别,在这里分享一下用到的opencv模块cv2部分函数的使用方法,也是给自己加深一下记忆. 一.cv2模块安装 在这里提醒 ...

  6. python图片识别是否p过_Python+Opencv进行识别相似图片

    标签:在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在 ...

  7. python给图片加半透明水印_Python+OpenCV为图片添加中文水印与图片水印

    OpenCV中在图片上输出中文一般有两种解决办法: 一种需要借助FreeType库实现.FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件. ...

  8. python找不到csv文件_Python如何读取csv文件

    逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本). 纯文本意味着该文件是一个字符序列, ...

  9. python opencv图像二值化函数_python opencv 二值化 计算白色像素点的实例

    python opencv 二值化 计算白色像素点的实例 贴部分代码 #! /usr/bin/env python # -*- coding: utf-8 -*- import cv2 import ...

最新文章

  1. Redis数据恢复--误删数据后一次吓尿的经历
  2. 想跟着微软赛跑会累死你
  3. maven详解之坐标与依赖
  4. 计算机两年发展,计算机发展历史
  5. 服务器asp.net权限设置问题及解决方法时间:
  6. leetcode mysql 排名_GitHub - nimphy/leetcode-Mysql
  7. jssdk 保存文件到手机_手机混用闪存到底是真是假?教你查手机闪存型号
  8. 一网打尽软件测试面试必问的所有Web测试点,你不知道的这都有!
  9. 最长回文子串-----Manacher算法
  10. 【免费模版分享】任务管理移动端Axure原型模板
  11. Eclipse 安装 yml 编辑器插件
  12. SSID的使用和中文设置
  13. 使用 Microsoft Symbol Server 获取调试符号文件
  14. 活力无限的J2ME技术
  15. centos7 nbd 挂在qcow2或qcow,raw,虚机镜像,virsh,virt,使用qemu-nbd挂载qcow2镜像文件
  16. 机器学习基础:概率和熵
  17. 今年Java面试必问的这些技术面,完整版开放免费下载!
  18. 报错:致命错误:Python.h:没有那个文件或目录
  19. 喜讯|山东百华鞋业上沂南新闻了!
  20. AUTOSAR架构学习之EcuM

热门文章

  1. 提交代码到GitHub,小绿格却不增加?
  2. 玩转Mybatis中的类型转换器TypeHandler
  3. android popupwindow 自定义背景,Android PopupWindow背景半透明兼容方案
  4. linux修改arena大小,教大家Resolume Arena怎么设置大屏幕的方法
  5. 应用宝上架审核要求_【建议收藏】安卓应用商店上架经验,含流程,方法
  6. linux mysql 事务_linux下mysql Insert update delete 事务 用户管理
  7. ajax为什么会全局刷新,为什么发送ajax请求页面也会刷新呢?
  8. Keras_insightface测试
  9. imagenet 测试精度记录
  10. Python中Queue.get()方法阻塞