学习opencv

def preprocess_hog(digits):

    samples = []

    for img in digits:

        gx = cv2.Sobel(img, cv2.CV_32F, 1, 0)

        gy = cv2.Sobel(img, cv2.CV_32F, 0, 1)

        mag, ang = cv2.cartToPolar(gx, gy)

        #bin_n = 16

        bin_n = 32

        bin = np.int32(bin_n*ang/(2*np.pi))

        bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:]

        mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:]

        hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)]

        hist = np.hstack(hists)


        # transform to Hellinger kernel

        eps = 1e-7

        hist /= hist.sum() + eps

        hist = np.sqrt(hist)

        hist /= norm(hist) + eps


        samples.append(hist)

    return np.float32(samples)


解释:(没办法,我是小白,完全不懂,数学巨菜,python现学,领导指派,不得不来,再找工作,可是没信啊。。。。。悲剧,只好看一句查一句了)


cv2.cartToPolar(x, y[, magnitude[, angle[, angleInDegrees]]]) → magnitude, angle

作用:笛卡尔坐标转换为极坐标,magnitude极径,angle极角

笛卡尔坐标系就是直角坐标系和斜角坐标系的统称。 相交于原点的两条数轴,构成了平面仿射坐标系。如两条数轴上的度量单位相等,则称此仿射坐标系为笛卡尔坐标系。两条数轴互相垂直的笛卡尔坐标系,称为笛卡尔直角坐标系,否则称为笛卡尔斜角坐标系。 (看明白没?哈哈,貌似就是我们以前用的直角坐标系的父集,这里好像就是用的直角坐标系。你是不是想问我为啥要把这么长的定义放在这里?当然是为了让你看了头晕啊。。。。)

极坐标的定义:

在 平面内取一个定点O, 叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向)。对于平面内任何一点M,用ρ表示线段OM的长度,θ表示从Ox到OM的角度,ρ叫做点M的极径,θ叫做点M的极角,有序数对 (ρ,θ)就叫点M的极坐标,这样建立的坐标系叫做极坐标系


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值