zoukankan      html  css  js  c++  java
  • 机器视觉——图像投影

    什么是图像投影

      要实现图像投影操作,我们首先要弄清楚什么是投影。图像投影分为水平投影和垂直投影:水平面方向的正投影叫水平投影,水平投影是指二维图像按行向y轴方向投影;垂直投影是指二位图像按列向x轴方向投影,投影的结果可以看成事一维图像。

      对于一个二维图像来说,投影是将图像二值化后的像素点按某一方向堆叠,了解了这个原理后,就可以写出图片投影的代码:

    水平投影:

    import cv2
    import numpy as np
    img=cv2.imread('123.jpg')
    cv2.imshow('origin',img)
    cv2.waitKey(0)
    grayimg=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
    img1,thres=cv.threshold(grayimg,130,255,cv.THRESH_BINARY)
    img1,thres1=cv.threshold(grayimg,130,255,cv.THRESH_BINARY)
    (h,w)=thres.shape
    a=[0 for i in range(0,w)]
    for j in range(0,w):
        for i in range(0,h):
            if thres[i,j]==0:
                a[j]+=1
                thres[i,j]=255
    for j in range(0,w):
        for i in range((h-a[j]),h):
            thres[i,j]=0
    cv.imshow('chuizhi',thres)
    cv.waitKey(0)

    垂直投影

    import cv2
    import numpy as np
    img=cv2.imread('123.jpg')
    cv2.imshow('origin',img)
    cv2.waitKey(0)
    grayimg=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
    img1,thres=cv.threshold(grayimg,130,255,cv.THRESH_BINARY)
    img1,thres1=cv.threshold(grayimg,130,255,cv.THRESH_BINARY)
    (h,w)=thres.shape
    a=[0 for i in range(0,w)]
    for j in range(0,w):
        for i in range(0,h):
            if thres[i,j]==0:
                a[j]+=1
                thres[i,j]=255
    for j in range(0,w):
        for i in range((h-a[j]),h):
            thres[i,j]=0
    cv.imshow('chuizhi',thres)
    cv.waitKey(0)

    其中

    grayimg=cv.cvtColor(img,cv.COLOR_BGR2GRAY)

    img1,thres=cv.threshold(grayimg,130,255,cv.THRESH_BINARY)

    img1,thres1=cv.threshold(grayimg,130,255,cv.THRESH_BINARY)

    这三行代码是由于后续操作中我们需要用到图像的长宽像素数据,但通过shape函数得到的数据除了长宽数据外还有图像的深度数据,这一项数据是我们不需要的,所以需要通过上述三行代码除去图像的深度数据。

    这次的实验到这里就结束了,希望看了这个实验的你可以自己动手实践一下。

  • 相关阅读:
    如何巧妙着运用「位运算」来解决问题?
    一文读懂一台计算机是如何把数据发送给另一台计算机的
    Java集合与泛型中的几个陷阱,你掉进了几个?
    【链表问题】打卡10:将搜索二叉树转换成双向链表
    【链表问题】打卡9:将单链表的每K个节点之间逆序
    【链表问题】打卡8:复制含有随机指针节点的链表
    单例模式中的volatile关键字
    链表回文判断(基于链表反转)—Java实现
    设计模式之单例模式
    Spring的IoC与AOP的理解
  • 原文地址:https://www.cnblogs.com/zhangmingfeng/p/12546871.html
Copyright © 2011-2022 走看看