简介:实时测量物体尺寸是使用OpenCV进行计算机视觉应用的一个常见案例。下面我来简单实现一下如何在以一张A4纸为背景的前提下进行物体测量。主要功能是从视频或图像中识别出特定的对象(如A4纸),并进行固定的流程:边缘检测、轮廓提取、透视变换和物体尺寸测量。
一、新建My_utils.py文件,编写以下功能:图像预处理、查找A4纸轮廓、进而查找A4纸里的物体轮廓、透视变换、填充、测量物体边长:
import cv2 as cv
import numpy as np
def getContours(img,thur = [100,100],showCanny = False,minArea = 1000,filter =0,draw=False): #图像预处理,模糊、边缘检测、腐蚀膨胀等
img_gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
img_blur = cv.GaussianBlur(img_gray,(5,5),1)
img_Canny = cv.Canny(img_blur,thur[0],thur[1])
kernel = np.ones((5,5))
img_dail = cv.dilate(img_Canny,kernel,iterations=3)
img_erode = cv.erode(img_dail,kernel,iterations=2)
if showCanny:cv.imshow('ShowCanny',img_erode)
contours, hiearchy = cv.findContours(img_erode,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE) #查找轮廓
finalContors = []
fo