python OpenCV 宽度测量

机器视觉第六次实验

一、实验目的

通过OpenCV第六次进行实验,对图片进行宽度测量。

二、实验内容

对图片进行宽度测量。

三、实验过程

我使用的是python语言+openCV对图片进行宽度测量的功能。

1)读取图片

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

代码实例:

img = cv2.imread("img1.png")

cv2.imshow("img",img)

cv2.waitKey(0)

3.1读取的图片

2)截取测量区域

实例代码:

#截取目标区域

recimg = img[80:236, 120:238]

cv2.imshow("img",recimg)

cv2.waitKey()

 

3.2截取的测量区域

3)二值化处理

使用threshold()函数进行图片反色:

实例代码:

#二值化处理

ret, th = cv2.threshold(recimg, 80, 255, cv2.THRESH_BINARY_INV)

cv2.imshow("img",th)

cv2.waitKey()

 

 

3.3二值化处理图

4)边缘检测、图像反色

输入的代码:

# 边缘检测、图片反色

img1 = cv2.Canny(recimg, 100, 200)

img1 = 255 - cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)

img2 = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)

img2 = cv2.cvtColor(255 - th, cv2.COLOR_RGB2GRAY)

cv2.imshow("img",img2)

cv2.waitKey()

 

3.4反色后得到的图片

5)边缘检测,框出物体的轮廓

实例代码:

contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

cnt = contours[0]

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

6)绘制直线

实例代码:

# 绘制直线

cv2.line(img1, (x, y), (x + w, y), (0,255,0), 3, 5)

cv2.line(img1, (x, y+h), (x + w, y+h), (0, 255, 0), 3, 5)

img[80:236, 120:238] = img1

 

7)图片上添加宽度大小

实例代码:

cv2.putText(img,'width:'+str(w),(10,30),cv2.FONT_HERSHEY_COMPLEX,1,(0,0,255),1)

 

3.5宽度测量图

 

四、实验中的错误

1)宽度测量的值需要写入图片,开始代码如下:

cv2.putText(img,'width:'+str(w),(10,30),font,1,(0,0,255),1)一直报如下错:

 

4.1写入文字报错

解决方案:将font 修改为以下代码:cv2.FONT_HERSHEY_COMPLEX

4.2解决填入宽度问题

2)我们需要一步步实验在图片上的最佳位置填入文字和宽度。

五、实验总结

学习了OpenCV的宽度测量,遇到了作业问题自己解决了,锻炼了自己的能力。

posted @ 2020-04-04 23:10  辣條先生  阅读(2565)  评论(0编辑  收藏  举报