app第三阶段冲刺第四天
作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16311555.html
今天先写怎么调用手机的相机权限
import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.SurfaceView; import android.view.View; import android.view.WindowManager; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import com.sueed.imagerecognition.filters.Filter; import com.sueed.imagerecognition.filters.NoneFilter; import com.sueed.imagerecognition.filters.ar.ImageDetectionFilter; import com.sueed.imagerecognition.imagerecognition.R; import org.opencv.android.CameraBridgeViewBase; import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame; import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2; import org.opencv.android.JavaCameraView; import org.opencv.android.OpenCVLoader; import org.opencv.core.Mat; import java.io.IOException; // Use the deprecated Camera class. @SuppressWarnings("deprecation") public final class CameraActivity extends AppCompatActivity implements CvCameraViewListener2 { // A tag for log output. private static final String TAG = CameraActivity.class.getSimpleName(); // The filters. private Filter[] mImageDetectionFilters; // The indices of the active filters. private int mImageDetectionFilterIndex; // The camera view. private CameraBridgeViewBase mCameraView; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); //init CameraView mCameraView = new JavaCameraView(this, 0); mCameraView.setMaxFrameSize(size.MaxWidth, size.MaxHeight); mCameraView.setCvCameraViewListener(this); setContentView(mCameraView); requestPermissions(); mCameraView.enableView(); } @Override public void onPause() { if (mCameraView != null) { mCameraView.disableView(); } super.onPause(); } @Override public void onResume() { super.onResume(); OpenCVLoader.initDebug(); } @Override public void onDestroy() { if (mCameraView != null) { mCameraView.disableView(); } super.onDestroy(); } @Override public boolean onCreateOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.activity_camera, menu); return true; } @Override public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) { case R.id.menu_next_image_detection_filter: mImageDetectionFilterIndex++; if (mImageDetectionFilters != null && mImageDetectionFilterIndex == mImageDetectionFilters.length) { mImageDetectionFilterIndex = 0; } return true; default: return super.onOptionsItemSelected(item); } } @Override public void onCameraViewStarted(final int width, final int height) { Filter Enkidu = null; try { Enkidu = new ImageDetectionFilter(CameraActivity.this, R.drawable.enkidu); } catch (IOException e) { e.printStackTrace(); } Filter akbarHunting = null; try { akbarHunting = new ImageDetectionFilter(CameraActivity.this, R.drawable.akbar_hunting_with_cheetahs); } catch (IOException e) { Log.e(TAG, "Failed to load drawable: " + "akbar_hunting_with_cheetahs"); e.printStackTrace(); } mImageDetectionFilters = new Filter[]{ new NoneFilter(), Enkidu, akbarHunting }; } @Override public void onCameraViewStopped() { } @Override public Mat onCameraFrame(final CvCameraViewFrame inputFrame) { final Mat rgba = inputFrame.rgba(); if (mImageDetectionFilters != null) { mImageDetectionFilters[mImageDetectionFilterIndex].apply(rgba, rgba); } return rgba; } }
明天写图像特征怎么过滤比对
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)