Python OpenCV 实现图片投影

一、实验目的

通过OpenCV第四次进行实验,对图片进行投影。

二、实验内容

对图片进行投影。

三、实验过程

我使用的是python语言+openCV来实现图片投影的功能。使用的测试图片如下:

 

3.1测试图片

 

使用imread()函数读取图片,imshow()函数显示图片,waitKey()函数含义为按下任意键继续;

实例代码:

#灰度化读取图片

img = cv2.imread('123.jpg', cv2.COLOR_BGR2GRAY)

cv2.imshow("img",img)

cv2.waitKey(0)

 

3.2读取的图片

 

二值化代码:

(_, thresh) = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY)

closed = cv2.erode(thresh, None, iterations = 5)

cv2.imshow('img',closed)

height, width = closed.shape[:2]

v = [0]*width

z = [0]*height

a = 0

垂直投影代码:

#垂直投影

#统计并存储每一列的黑点数

for x in range(0, width):               

    for y in range(0, height):

        if closed[y,x][0] == 0:

            a = a + 1

        else :

            continue

    v[x] = a

    a = 0

l = len(v)

#创建空白图片,绘制垂直投影图

emptyImage = numpy.zeros((height, width, 3), numpy.uint8)

for x in range(0,width):

    for y in range(0, v[x]):

        b = (255,255,255)

        emptyImage[y,x] = b

cv2.imshow('chuizhi', emptyImage)

 

3.2垂直投影图

水平投影代码:

#水平投影

#统计每一行的黑点数

a = 0

emptyImage1 = numpy.zeros((height, width, 3), numpy.uint8)

for y in range(0, height):

    for x in range(0, width):

        if closed[y,x][0] == 0:

            a = a + 1

        else :

            continue

    z[y] = a

    a = 0

l = len(z)

#绘制水平投影图

for y in range(0,height):

    for x in range(0, z[y]):

        b = (255,255,255)

        emptyImage1[y,x] = b

cv2.imshow('shuiping', emptyImage1)

cv2.waitKey(0)

 

3.4水平投影图

四、实验总结

学习了OpenCV的图片投影一功能,途中未遇到问题,但是本学期学的是Python,我就在网上找的例子分析代码,也是很快就用Python的代码做出来了此题,锻炼了自己的能力。

posted @ 2020-03-11 13:10  辣條先生  阅读(1491)  评论(0编辑  收藏  举报