private CameraBridgeViewBase mOpenCvCameraView;
private Puzzle15Processor mPuzzle15;
private int mGameWidth;
private int mGameHeight;
/**
* 假如要使用摄像头的话, CameraBridgeViewBase这个类必须要调用,而且要引用 CvCameraViewListener接口,
* 就需要调用onCameraViewStarted( int w,int h), onCameraViewStopped(),onCameraFrame(Mat inputFrame) 方法
*/
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log. i(TAG, "OpenCV loaded successfully" );
/* Now enable camera view to start receiving frames */
mOpenCvCameraView.setOnTouchListener(Puzzle15Activity.this);
mOpenCvCameraView.enableView();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
org.opencv.features2d
public class Features2d
类中包含的方法有:drawKeypoints(),drawMatches(),drawMatches2()以及一系列的本地方法
public class FeatureDetector
类中包含的方法有:detect(),create(),empty(),read(),write()以及一系列的本地方法
Create()创建一个特征检测的方法 ,detect()方法检测特征点(一张图片或者图片集)
Public class KeyPoint
这个类主要包含检测的特征点的数据结构,包含特征点的坐标,邻域的直径, id,特征点的方向等等。
Org.opencv.utils
Public class Converts
这个类提供了很多Mat与 List<E>互相转换的方法。
但是如何将Mat转换成 Bitmap???
还有:如何实现List<>和数组之间的互相转换???
将bitmap 转换成byte[],在将其转换成 List<Byte>,转换成Mat ,进行特征点的检测和绘制,输出 Mat,将其转换byte[],得到 bitmap。
通过上面的方法理论上也是可行的,但是 OpenCV2.4.3SDK中提供了两个方法,用于 Bitmap&Mat之间的相互转换。Org.opencv.android中 Utils.java中的bitmapToMat()&matToBitmap() 。