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 相关文章推荐
python 实现插入排序算法
Jun 05 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
python 中split 和 strip的实例详解
Jul 12 Python
利用Django内置的认证视图实现用户密码重置功能详解
Nov 24 Python
详解Python在七牛云平台的应用(一)
Dec 05 Python
Python进阶之尾递归的用法实例
Jan 31 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
Python实现生成密码字典的方法示例
Sep 02 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
python自动化测试三部曲之unittest框架的实现
Oct 07 Python
python文本处理的方案(结巴分词并去除符号)
May 26 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
建立动态的WML站点(三)
2006/10/09 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
详解PHP序列化反序列化的方法
2015/10/27 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
JavaScript入门教程(8) Location地址对象
2009/01/31 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
2017/08/28 jQuery
彻底理解js面向对象之继承
2018/02/04 Javascript
详解vue中axios的封装
2018/07/18 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
python访问抓取网页常用命令总结
2017/04/11 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
公司领导推荐信
2013/11/12 职场文书
高中生期末评语
2014/01/28 职场文书
新闻传播专业求职信
2014/07/22 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
电影开国大典观后感
2015/06/04 职场文书
给朋友的赠语
2015/06/23 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
Python中使用subprocess库创建附加进程
2021/05/11 Python
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js