学习opencv
2014-04-15 18:50
148 查看
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的极坐标,这样建立的坐标系叫做极坐标系。
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的极坐标,这样建立的坐标系叫做极坐标系。
相关文章推荐
- OpenCV学习笔记(三十)——解开VideoInput面纱highgui
- 【OpenCV学习笔记】【函数学习】十(常用的OpenCV函数汇总说明)
- OpenCV 2.4.9 学习笔记(3)—— OpenCV自动为输出数组(矩阵)分配内存
- OpenCV 2.4.9 学习笔记(4)—— 像素类型与Templates的限制使用
- opencv 2.x学习笔记(十四)离散傅里叶变换
- opencv学习-kalman 滤波 演示与opencv代码
- Opencv学习笔记(六)SURF学习笔记
- opencv学习笔记--Canny边缘检测
- OpenCV学习--saturate_cast防止数据溢出
- [学习OpenCV攻略][016][RedHat下安装OpenCV]
- OpenCV 3学习笔记(三) 对图像进行Canny边缘检测
- opencv 学习第二天 学习opencv(中文版)画一个图像
- opencv2函数学习之threshold:实现图像阈值化
- OpenCV学习C++接口 Mat像素遍历详解
- 基础学习笔记之opencv(24):imwrite函数的使用
- OpenCV学习(19) 细化算法(7)
- opencv学习 视频帧截取
- 【opencv学习之三十二】轮廓查找并统计2
- OpenCV学习(13) 细化算法(1)(转)
- OpenCV学习之运动模板检测