一、实验目的
通过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的代码做出来了此题,锻炼了自己的能力。