opencv水平投影,opencv投影法

  opencv水平投影,opencv投影法

  1.简介这篇文章将展示什么是图像的投影直方图,以及如何绘制这个投影直方图。例如,如果我们想识别一些字符,我们可以使用投影来提取图像上的特征。投影直方图是一种使用图像在给定方向(例如,垂直或水平方向)上的投影的方法。这些投影表示每一列或每一行中属于该对象的像素数。

  2.投影直方图的功能。让我们看一个简单的例子,如下所示:

  上图分别代表数字5及其垂直和水平投影。上述两个直方图可以用作数字5的向量描述符。在我们计算了它们与标识数字0到9的直方图向量之间的相似度之后,我们就可以知道当前的数字是多少了。

  3.实际应用那么,我们来看一个实际项目中的具体栗子!

  3.1读入图像和灰度。首先,我们使用opencv读取颜色图并执行灰度,如下所示:

  导入cv2

  将numpy作为np导入

  将matplotlib.pyplot作为plt导入

  导入操作系统

  #加载图像

  img=cv2 . im read( display _ image . png )

  #转换为灰度

  Gray=cv2.cvtcolor (img,cv2.color _ bgr2gray)结果如下:

  上图的上半部分是输入的原始图像,下半部分是灰度图像。

  3.2二值化然后我们对上图进行中值滤波去噪,再进行膨胀腐蚀操作。示例代码如下:

  #平滑图像以避免噪声

  gray=cv2.medianBlur(gray,5)

  #应用自适应阈值

  thresh=cv2 . adaptive threshold(gray,255,1,1,11,2)

  #应用一些扩张和侵蚀来连接缝隙

  kernel=np.ones((5,5),np.uint8)

  thresh=cv2.dilate(thresh,kernel,iterations=2)

  Thresh=cv2.erode (thresh,kernel,iterations=2)结果如下:

  上图的上半部分是中值滤波后的图,下半部分是二元膨胀腐蚀后的图。

  3.3 findContours然后我们使用函数findContours得到封闭区域的轮廓,过滤掉高度较小的轮廓。示例代码如下:

  #寻找轮廓

  轮廓,层次=cv2.findContours(thresh,cv2。RETR _列表,cv2。CHAIN_APPROX_SIMPLE)

  #对于每个轮廓,找到边界矩形并绘制它

  对于轮廓中的cnt:

  x,y,w,h=cv2.boundingRect(cnt)

  如果h 10:

  2.CVrectangle (img,(x,y),(x w,y h),(0,255,0),2)结果如下:

  3.4计算直方图最后,我们来计算向X轴方向的投影。相应的示例代码如下:

  #图像的宽度和高度

  高度,宽度=thresh.shape

  #对价值线求和

  vertical_px=np.sum(thresh,axis=0)

  #正常化

  规格化=vertical_px/255

  #用零创建黑色图像

  blank image=NP . zeros _ like(thresh)

  #制作垂直投影直方图

  对于idx,枚举中的值(正常化):

  cv2.line(blankImage,(idx,0),(idx,height-int(value)),(255,255,255),1)

  #连接图像

  img _ concate=cv2.vconcat(

  [img,cv2.cvtColor(blankImage,cv2。COLOR_BGR2RGB)])

  cv2.imshow(out ,img _ concate)

  2.cvwaitkey (0)获得以下结果:

  请注意,观察上图中重复出现的数字,比如4和3,它们的垂直投影直方图几乎相同!

  4.总结这篇文章是一篇简单的文章,向你展示如何简单的制作投影直方图,以及如何绘制。如本文所述,我们可以为每个字符建立一个存储向量,然后用它来对字符进行分类。

  你丢了学业吗?

  关注微信官方账号《AI算法之道》了解更多关于AI算法的信息。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • opencv图像识别数字,opencv 识别
  • opencv图像识别数字,opencv 识别,如何基于opencv实现简单的数字识别
  • opencv图像的旋转角度计算,opencv图像仿射变换
  • opencv图像的旋转角度计算,opencv图像仿射变换,OpenCV图像几何变换之透视变换
  • opencv图像的旋转角度计算,opencv 旋转任意角度
  • opencv图像的旋转角度计算,opencv 旋转任意角度,opencv图片的任意角度旋转实现示例
  • opencv图像处理函数,opencv图像轮廓合并
  • opencv图像处理函数,opencv图像轮廓合并,OpenCV图像处理之七种常用图像几何变换
  • opencv双线性插值函数,opencv 图像插值
  • LBPH人脸识别,基于opencv的人脸识别技术
  • LBPH人脸识别,基于opencv的人脸识别技术,Opencv LBPH人脸识别算法详解
  • ,,OpenCV黑帽运算(BLACKHAT)的使用
  • opencv双线性插值函数,opencv 图像插值,C++ OpenCV实现图像双三次插值算法详解
  • ,,C语言 OpenCV实现柱面投影
  • ,,C++ Opencv imfill孔洞填充函数的实现思路与代码
  • 留言与评论(共有 条评论)
       
    验证码: