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处理文本文件实现生成指定格式文件的方法
Jul 31 Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
Python列表计数及插入实例
Dec 17 Python
python将ip地址转换成整数的方法
Mar 17 Python
python模拟事件触发机制详解
Jan 19 Python
Python3模拟登录操作实例分析
Mar 12 Python
简单介绍python封装的基本知识
Aug 10 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 Python
python cv2图像质量压缩的算法示例
Jun 04 Python
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 Python
Python pyecharts绘制条形图详解
Apr 02 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
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
深入理解Python 代码优化详解
2014/10/27 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
Python单元和文档测试实例详解
2019/04/11 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
如何基于Python实现数字类型转换
2020/02/07 Python
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
华为的Java面试题
2014/03/07 面试题
教师专业自荐信
2014/05/31 职场文书
通知函的格式
2015/04/27 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
python Polars库的使用简介
2021/04/21 Python
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
python实现会员管理系统
2022/03/18 Python
服务器SVN搭建图文安装过程
2022/06/21 Servers