Python实现图像的垂直投影示例


Posted in Python onJanuary 17, 2020

Python + OpenCV 直接上代码

import cv2 
import numpy as np 
from matplotlib import pyplot as plt 
from PIL import Image
 
img=cv2.imread('0002.jpg') #读取图片,装换为可运算的数组
GrayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  #将BGR图转为灰度图
ret,thresh1=cv2.threshold(GrayImage,130,255,cv2.THRESH_BINARY) #将图片进行二值化(130,255)之间的点均变为255(背景)
# print(thresh1[0,0])#250 输出[0,0]这个点的像素值 				#返回值ret为阈值
# print(ret)#130
(h,w)=thresh1.shape #返回高和宽
# print(h,w)#s输出高和宽
a = [0 for z in range(0, w)] 
print(a) #a = [0,0,0,0,0,0,0,0,0,0,...,0,0]初始化一个长度为w的数组,用于记录每一列的黑点个数 
 
#记录每一列的波峰
for j in range(0,w): #遍历一列 
  for i in range(0,h): #遍历一行
    if thresh1[i,j]==0: #如果改点为黑点
      a[j]+=1 		#该列的计数器加一计数
      thresh1[i,j]=255 #记录完后将其变为白色 
  # print (j)      
 
#      
for j in range(0,w): #遍历每一列
  for i in range((h-a[j]),h): #从该列应该变黑的最顶部的点开始向最底部涂黑
    thresh1[i,j]=0  #涂黑
 
#此时的thresh1便是一张图像向垂直方向上投影的直方图
#如果要分割字符的话,其实并不需要把这张图给画出来,只需要的到a=[]即可得到想要的信息
 
 
# img2 =Image.open('0002.jpg')
# img2.convert('L')
# img_1 = np.array(img2)
plt.imshow(thresh1,cmap=plt.gray())
plt.show()
cv2.imshow('img',thresh1) 
cv2.waitKey(0) 
cv2.destroyAllWindows()

原图:

Python实现图像的垂直投影示例

运行结果:

Python实现图像的垂直投影示例

在水平方向上进行投影,代码如下所示(原理同上):

import cv2 
import numpy as np 
from matplotlib import pyplot as plt 
from PIL import Image
 
img=cv2.imread('C:/Users/Jet Zhang/Desktop/50/50/cut.png') 
GrayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
ret,thresh1=cv2.threshold(GrayImage,130,255,cv2.THRESH_BINARY)
 
(h,w)=thresh1.shape #返回高和宽
 
a = [0 for z in range(0, h)] 
print(a) 
 
for j in range(0,h): 
  for i in range(0,w): 
    if thresh1[j,i]==0: 
      a[j]+=1 
      thresh1[j,i]=255
     
for j in range(0,h): 
  for i in range(0,a[j]):  
    thresh1[j,i]=0  
 
plt.imshow(thresh1,cmap=plt.gray())
plt.show()

效果图如下所示:

Python实现图像的垂直投影示例

以上这篇Python实现图像的垂直投影示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
urllib2自定义opener详解
Feb 07 Python
使用Python装饰器在Django框架下去除冗余代码的教程
Apr 16 Python
Python中类的初始化特殊方法
Dec 01 Python
Python中最大最小赋值小技巧(分享)
Dec 23 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
详解用Python为直方图绘制拟合曲线的两种方法
Aug 21 Python
Python telnet登陆功能实现代码
Apr 16 Python
Django封装交互接口代码
Jul 12 Python
pycharm如何使用anaconda中的各种包(操作步骤)
Jul 31 Python
pandas处理csv文件的方法步骤
Oct 16 Python
Python脚本打包成可执行文件过程解析
Oct 20 Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 Python
基于python实现语音录入识别代码实例
Jan 17 #Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 #Python
python实现高斯投影正反算方式
Jan 17 #Python
python中图像通道分离与合并实例
Jan 17 #Python
Python-opencv 双线性插值实例
Jan 17 #Python
如何通过python实现人脸识别验证
Jan 17 #Python
Python-openCV读RGB通道图实例
Jan 17 #Python
You might like
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
php处理带有中文URL的方法
2016/07/11 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
兼容ie和firefox js关闭代码
2008/12/11 Javascript
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
Python 可爱的大小写
2008/09/06 Python
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
python递归法实现简易连连看小游戏
2020/03/25 Python
python并发编程多进程 互斥锁原理解析
2019/08/20 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
装潢设计专业推荐信模板
2013/11/26 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
毕业生的自我评价范文
2013/12/31 职场文书
合伙经营协议书
2014/04/18 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
pandas中关于apply+lambda的应用
2022/02/28 Python