안 드 로 이 드 OpenCV 얼굴 인식 Opencv 3.1
1. 환경 설정
이전의 문장 을 참고 하 다
http://blog.csdn.net/aaron121314/article/details/53465547
2. 레이아웃
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/HelloOpenCvView" />
3. 권한
android:name="android.permission.CAMERA"/>
android:name="android.hardware.camera" android:required="false"/>
android:name="android.hardware.camera.autofocus" android:required="false"/>
android:name="android.hardware.camera.front" android:required="false"/>
android:name="android.hardware.camera.front.autofocus" android:required="false"/>
4. 초기 화
private CameraBridgeViewBase mOpenCvCameraView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.HelloOpenCvView);
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener(this);
}
@Override
protected void onResume() {
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
}
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
try {
// load cascade file from application resources
InputStream is = getResources().openRawResource(R.raw.lbpcascade_frontalface);
File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
mCascadeFile = new File(cascadeDir, "lbpcascade_frontalface.xml");
FileOutputStream os = new FileOutputStream(mCascadeFile);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = is.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
is.close();
os.close();
mJavaDetector = new CascadeClassifier(mCascadeFile.getAbsolutePath());
if (mJavaDetector.empty()) {
mJavaDetector = null;
}
cascadeDir.delete();
} catch (IOException e) {
e.printStackTrace();
}
mOpenCvCameraView.enableView();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
여기까지 카메라 화면 을 표시 할 수 있 습 니 다.
lbpcascade_frontalface. xml 이 사람의 얼굴 훈련 데이터 입 니 다.사람의 얼굴 을 검사 하 는 데 쓰 인 다.
5. 얼굴 검사
이 listener 구현
public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2
@Override
public void onCameraViewStarted(int width, int height) {
mGray = new Mat();
mRgba = new Mat();
mRgbaT=new Mat();
} @Override
public void
onCameraViewStopped() {
mGray.release()
;
mRgba.release()
;
mRgbaT.release();
} @Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();
mGray = inputFrame.gray();
Core.transpose(mRgba,mRgbaT); // ,
Imgproc.resize(mRgbaT,mRgba, mRgba.size(), 0.0D, 0.0D, 0); // mRgbaF
Core.flip(mRgba, mRgba,0); // x,y ,0-x 1-y
Core.transpose(mGray,mRgbaT); // ,
Imgproc.resize(mRgbaT,mGray, mGray.size(), 0.0D, 0.0D, 0); // mRgbaF
Core.flip(mGray, mGray,0); // x,y ,0-x 1-y
if (mAbsoluteFaceSize == 0) {
int height = mGray.rows();
if (Math.round(height * mRelativeFaceSize) > 0) {
mAbsoluteFaceSize = Math.round(height * mRelativeFaceSize);
}
}
MatOfRect faces = new MatOfRect();
if (mJavaDetector != null)
mJavaDetector.detectMultiScale(mGray, faces, 1.1, 2, 2, // TODO: objdetect.CV_HAAR_SCALE_IMAGE
new Size(mAbsoluteFaceSize, mAbsoluteFaceSize), new Size());
Rect[] facesArray = faces.toArray();
for (int i = 0; i < facesArray.length; i++) {
Log.i("a","face "+facesArray[i]);
Imgproc.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(), FACE_RECT_COLOR, 3);
}
return mRgba;
}
}
얼굴 검사 하 러.
메모: 테스트 할 때 preview 화면 이 90 도 회전 되 었 기 때문에 그림 을 바로 잡 아야 합 니 다.두 개의 매개 변 수 는 모두 회전 해 야 하고 mGray 도 선택해 야 한다. 그렇지 않 으 면 화면 이 바 르 지만 사람의 얼굴 이 감지 되 지 않 는 다.
Core.transpose(mRgba,mRgbaT); // ,
Imgproc.resize(mRgbaT,mRgba, mRgba.size(), 0.0D, 0.0D, 0); // mRgbaF
Core.flip(mRgba, mRgba,0); // x,y ,0-x 1-y
Core.transpose(mGray,mRgbaT); // ,
Imgproc.resize(mRgbaT,mGray, mGray.size(), 0.0D, 0.0D, 0); // mRgbaF
Core.flip(mGray, mGray,0); // x,y ,0-x 1-y
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.