机器视觉——图像投影

Posted zhangmingfeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器视觉——图像投影相关的知识,希望对你有一定的参考价值。

什么是图像投影

  要实现图像投影操作,我们首先要弄清楚什么是投影。图像投影分为水平投影和垂直投影:水平面方向的正投影叫水平投影,水平投影是指二维图像按行向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函数得到的数据除了长宽数据外还有图像的深度数据,这一项数据是我们不需要的,所以需要通过上述三行代码除去图像的深度数据。

 

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

以上是关于机器视觉——图像投影的主要内容,如果未能解决你的问题,请参考以下文章

图像处理分析与机器视觉第二章

图像处理分析与机器视觉读书笔记-------第二章图像及其表达与性质

计算机视觉|投影与三维视觉

Halcon_标定

机器视觉行业实践技巧 -- OpenCV技巧与方法:代码脚手架 -- 图像处理

机器视觉行业实践技巧 -- OpenCV技巧与方法:代码脚手架 -- 图像处理