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函数参数*args**kwargs用法实例
Dec 04 Python
Python Tkinter基础控件用法
Sep 03 Python
python服务器与android客户端socket通信实例
Nov 12 Python
用Python实现通过哈希算法检测图片重复的教程
Apr 02 Python
在Django的上下文中设置变量的方法
Jul 20 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
django加载本地html的方法
May 27 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
Mar 26 Python
python接口调用已训练好的caffe模型测试分类方法
Aug 26 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 Python
通过实例解析python创建进程常用方法
Jun 19 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 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实现的MySQL数据浏览器
2007/03/11 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
php7下的filesize函数
2019/09/30 PHP
Javascript 面向对象之重载
2010/05/04 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
Python求算数平方根和约数的方法汇总
2016/03/09 Python
pandas多级分组实现排序的方法
2018/04/20 Python
TensorFlow Session会话控制&Variable变量详解
2018/07/30 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Python常用编译器原理及特点解析
2020/03/23 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
详解Python模块化编程与装饰器
2021/01/16 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
2019年分享net面试的经历和题目
2016/08/07 面试题
ajax是什么及其工作原理
2012/02/08 面试题
测控技术与仪器个人求职信范文
2013/12/30 职场文书
应届生如何写自荐信
2014/01/05 职场文书
趣味比赛活动方案
2014/02/15 职场文书
离婚案件上诉状
2015/05/23 职场文书
答谢酒会主持词
2015/07/02 职场文书
2016春季运动会前导词
2015/11/25 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
Java 定时任务技术趋势简介
2022/05/04 Java/Android