该方法基本思想是通过分析高低频信息检测出轮廓碰伤、运动轨迹突变等信息,在工业上应用可能比较广泛, 对各种不规则形状都能分析,不过对高频信息多的复杂形状可能不好区分形状与噪音。
在这个例子中讲使用一个有鼓包的鸡蛋
import numpy as np
from scipy.ndimage import gaussian_filter1d
import matplotlib.pyplot as plt
import cv2 as cv
img = cv.imread('egg_flawed.jpg',0)
h, w = img.shape[:2]
二值化之后成为上图
ret,thresh = cv.threshold(img,200,255,cv.THRESH_BINARY_INV)
在充填,使用重心找到一个中心之后进行极坐标转换(这里偷懒没有充填,重心可能偏一点,影响不大)因为方便取值所以讲转换后图形旋转90°
contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_NONE)
M = cv.moments(contours[0])
center = (int(M["m10"] / M["m0