项目代码已托管到
github
上
共两个版本
- C++
- Python
在实际使用 C++ 的过程中,经常需要使用到枚举,然而在 C++ 中并不能给枚举添加方法,属性等特性,如果要使用这些特性,需要通过一些特殊的办法来做到,对枚举进行一个封装。
以当前用到的封装移动方式为例
本文所有代码,只使用
C++
实现,Python类似,甚至更加简单,暂不做实现。
特征检测常用的算法有:
SIFT
和SURF
已经申请了专利,在OpenCV中使用需要付费,所以不做讨论。
克里斯·哈里斯(Chris Harris)和迈克·史蒂芬斯(Mike Stephens)在1988年的论文《组合式拐角和边缘检测器》(《A Combined Corner and Edge Detector》)中做了一次找到这些拐角的尝试,所以现在将其称为哈里斯拐角检测器。这篇论文把这个简单的想法变成了数学形式。它基本上找到了在所有方向上位移的强度差异。
1 |
cornerHarris(src, dst, blockSize, ksize, k) |
src
:必须是单通道灰度图dst
:返回类型是CV_32FC1
,大小与 src
相同。blockSize
:角点检测考虑的领域大小,int类型
kszie
:Sobel算子的大小,int类型
k
:自由度参数,值越小检测出的结果越多。double类型
1
开始标记1
。(非常重要,后面介绍)以下只列举常用的方法和常用的参数,例如枚举,只会将最常用的几个列举出来,详细的请参考官方文档。
对于
C++
默认使用了using namespace cv;
对于
Python
默认使用了import cv2 as cv
和import numpy as np
OpenCV版本:3.4.7
1 |
imread(filename, flags) |
filename
:图片路径flags
:IMREAD_COLOR
:默认值,返回3通道的BGR色彩图像IMREAD_GRAYSCALE
:返回单通道灰色图片IMREAD_UNCHANGED
:按原样返回。