python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...
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,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...相关推荐
- python打出由边框包围的_python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)...
图像边框的实现 图像边框设计的主要函数 cv.copyMakeBorder()--实现边框填充 主要参数如下: 参数一:源图像--如:读取的img 参数二--参数五分别是:上下左右边的宽度--单位:像 ...
- python图片保存为txt文件_python + opencv实现提取png图像的像素信息并存储到txt文件中(附安装指导)...
相关库安装指导: 这里我们需要 opencv_python,numpy,matplotlib库,另外我用的是python3.6.1版本. 一般库大家都是用pip install命令安装的,不过不知道为 ...
- python opencv图片旋转180度_Python opencv图像镜像翻转
最近在训练CNN网络,需要对数据进行扩充,于是想做一下图像的镜像翻转,主要参考了博客: 不过我发现博主使用的是opencv老版本了,现在大家都是cv2了,因此我对博主的代码进行了必要的修改. 首先,说 ...
- python数字图像处理、色彩空间类型转换_Python+OpenCV图像处理—— 色彩空间转换...
一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...
- python安装cv2模块的方法_Python opencv模块cv2安装和部分函数使用
Python opencv模块cv2安装和部分函数使用 前几天做了一下验证码识别,在这里分享一下用到的opencv模块cv2部分函数的使用方法,也是给自己加深一下记忆. 一.cv2模块安装 在这里提醒 ...
- python图片识别是否p过_Python+Opencv进行识别相似图片
标签:在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在 ...
- python给图片加半透明水印_Python+OpenCV为图片添加中文水印与图片水印
OpenCV中在图片上输出中文一般有两种解决办法: 一种需要借助FreeType库实现.FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件. ...
- python找不到csv文件_Python如何读取csv文件
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本). 纯文本意味着该文件是一个字符序列, ...
- python opencv图像二值化函数_python opencv 二值化 计算白色像素点的实例
python opencv 二值化 计算白色像素点的实例 贴部分代码 #! /usr/bin/env python # -*- coding: utf-8 -*- import cv2 import ...
最新文章
- Redis数据恢复--误删数据后一次吓尿的经历
- 想跟着微软赛跑会累死你
- maven详解之坐标与依赖
- 计算机两年发展,计算机发展历史
- 服务器asp.net权限设置问题及解决方法时间:
- leetcode mysql 排名_GitHub - nimphy/leetcode-Mysql
- jssdk 保存文件到手机_手机混用闪存到底是真是假?教你查手机闪存型号
- 一网打尽软件测试面试必问的所有Web测试点,你不知道的这都有!
- 最长回文子串-----Manacher算法
- 【免费模版分享】任务管理移动端Axure原型模板
- Eclipse 安装 yml 编辑器插件
- SSID的使用和中文设置
- 使用 Microsoft Symbol Server 获取调试符号文件
- 活力无限的J2ME技术
- centos7 nbd 挂在qcow2或qcow,raw,虚机镜像,virsh,virt,使用qemu-nbd挂载qcow2镜像文件
- 机器学习基础:概率和熵
- 今年Java面试必问的这些技术面,完整版开放免费下载!
- 报错:致命错误:Python.h:没有那个文件或目录
- 喜讯|山东百华鞋业上沂南新闻了!
- AUTOSAR架构学习之EcuM
热门文章
- 提交代码到GitHub,小绿格却不增加?
- 玩转Mybatis中的类型转换器TypeHandler
- android popupwindow 自定义背景,Android PopupWindow背景半透明兼容方案
- linux修改arena大小,教大家Resolume Arena怎么设置大屏幕的方法
- 应用宝上架审核要求_【建议收藏】安卓应用商店上架经验,含流程,方法
- linux mysql 事务_linux下mysql Insert update delete 事务 用户管理
- ajax为什么会全局刷新,为什么发送ajax请求页面也会刷新呢?
- Keras_insightface测试
- imagenet 测试精度记录
- Python中Queue.get()方法阻塞