Android 下 OpenCV的CvType

本地资源图片转换成垫

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.hhh);

Mat mat = new Mat(bitmap.getWidth(),bitmap.getHeight(),CvType.CV_8UC4);

Utils.bitmapToMat(bitmap,mat);

这里需要特别强调的是CvType.CV_8UC4这个参数;

创建垫矩阵/图像容器类的很多构造方法或者其他成员方法在创建垫对象的时候,都

需要指定类型 - 所创建图像/矩阵的类型,关于垫的CvType类型,很多时候容易出现错误;

从源代码看这些类型:

(_type是CV_8UC1,CV_64FC3,CV_32SC(12)等)

同样,我们通过转到定义法,看一下CV_8UC1,CV_64FC3等这些宏到底是什么;

这里的类型可以是任何的预定义类型,预定义类型的结构如下所示:

CV_ <bit_depth>(S | U | F)C <number_of_channels>

一。bit_depth:比特数,代表8bite,16bites,32bites,64bites ---举个例子说,如:

如果你现在创建了一个存储 - 灰度图片的垫对象,这个图像的大小为宽100,高100,那么,现在这张

灰度图片中有10000个像素点,它每一个像素点在内存空间所占的空间大小是8bite,8位所以它对

应的就是CV_8

二.S | U | F:

S--代表--- signed int ---有符号整形

U--代表--unsigned int--无符号整形

F--代表--float -----单精度浮点型

三.C <number_of_channels>

这个代表---一张图片的通道数,比如:

1--灰度图片--grayImg ---是 - 单通道图像

2 - RGB彩色图像---------是--3通道图像

3--带ALPH通道的RGB图像 - 是--4通道图像

 

我们解读一下的OpenCV的源代码:

【1】CV_8UC1 ---则可以创建---- 8位无符号的单通道---灰度图片------ GrayImg

#define CV_8UC1 CV_MAKETYPE(CV_8U,1)

#define CV_8UC2 CV_MAKETYPE(CV_8U,2)

2】CV_8UC3 ---则可以创建---- 8位无符号的三通道--- RGB彩色图像--- ColorImg

#define CV_8UC3 CV_MAKETYPE(CV_8U,3)

【3】CV_8UC4--则可以创建----- 8位无符号的四通道---带透明色的RGB图像

#define CV_8UC4 CV_MAKETYPE(CV_8U,4)

CvType各Bite下可用参数说明

8U说明:无符号的8位图

值:CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4

通道取值范围:0〜255

8S说明:有符号的8个图

值:CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4

通道取值范围:-128〜127

16U说明:无符号的16个图

值:CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4

通道取值范围:0〜65535

16S说明:有符号的16个图

值:CV_16SC1,CV_16SC2,CV_16SC3,CV_16SC4

通道取值范围:-32768〜32767

32S说明:无符号的32个图

值:CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4

通道取值范围:2147483648 2147483647〜

32F说明:浮点型32个图

值:CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4

通道取值范围:1.18 *(10 -38次方])〜3.40 *(10 [38次方])

64F说明:浮点型64个图

值:CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4

通道取值范围:2.23 *(10 -308次方])〜1.79 *(10 [308次方])

1U说明:1位

值:IPL_DEPTH_1U

通道取值范围:0〜1

 

参考:https//my.oschina.net/u/3767256/blog/1794173

https://blog.csdn.net/maweifei/article/details/51221259

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 下载OpenCV库 首先,你需要下载OpenCV库。你可以从官网下载最新版本的OpenCV库,也可以从GitHub上下载最新的开发版本。 2. 安装OpenCV库 下载完成后,你需要将OpenCV库安装到你的计算机上。安装过程可能会因操作系统而异,但通常情况下,你只需要按照安装向导的指示进行操作即可。 3. 配置Android Studio 打开Android Studio,创建一个新项目。在项目中,你需要添加OpenCV库的引用。为此,请按照以下步骤操作: - 在项目的build.gradle文件中添加以下代码: ``` dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'org.opencv:opencv-android:3.4.1' } ``` - 在AndroidManifest.xml文件中添加以下代码: ``` <uses-permission android:name="android.permission.CAMERA" /> ``` - 在MainActivity.java文件中添加以下代码: ``` import org.opencv.android.OpenCVLoader; public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 { private CameraBridgeViewBase mOpenCvCameraView; static { if (!OpenCVLoader.initDebug()) { // Handle initialization error } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.camera_view); mOpenCvCameraView.setCvCameraViewListener(this); } @Override public void onResume() { super.onResume(); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_4_1, this, mLoaderCallback); } private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: mOpenCvCameraView.enableView(); break; default: super.onManagerConnected(status); break; } } }; @Override public void onPause() { super.onPause(); if (mOpenCvCameraView != null) { mOpenCvCameraView.disableView(); } } @Override public void onDestroy() { super.onDestroy(); if (mOpenCvCameraView != null) { mOpenCvCameraView.disableView(); } } @Override public void onCameraViewStarted(int width, int height) { } @Override public void onCameraViewStopped() { } @Override public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { Mat gray = inputFrame.gray(); return gray; } } ``` 这段代码将初始化OpenCV库,并在CameraView中显示灰度图像。 4. 运行应用程序 现在,你可以运行你的应用程序并测试它是否正常工作。如果一切正常,你应该能够看到一个显示灰度图像的CameraView。 以上就是Android Studio配置OpenCV的基本步骤。当然,如果你需要更高级的功能,你可能需要更多的配置和代码。但是,这些基本步骤应该足以让你开始使用OpenCV了。 ### 回答2: OpenCV是一个开源的计算机视觉库,其中包含各种图像处理和计算机视觉算法。我们可以将其集成到Android应用程序中,以用于各种图像处理任务。 为了在Android Studio中配置OpenCV,以下是需要执行的步骤: 1. 下载OpenCV库文件 在 https://opencv.org/releases/ 下载适合你的环境版本的OpenCV库文件,然后解压到一个文件夹下。 2. 在Android Studio中添加OpenCV依赖项 在build.gradle(Module:app)文件中添加以下代码,其中/path/to/opencv/libs应该指向你之前解压的OpenCV库的libs目录: ```java dependencies { implementation files('/path/to/opencv/libs/opencv_java4.jar') } ``` 3. 在AndroidManifest.xml文件中添加权限 ```java <uses-permission android:name="android.permission.CAMERA" /> ``` 4. 在Java代码中加载和使用OpenCV库 在MainActivity.java类中添加以下代码以加载OpenCV库: ```java public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 { static { System.loadLibrary("opencv_java4"); } //rest of your code } ``` 5. 测试OpenCV库配置是否成功 启动应用程序,如果一切顺利,你会看到通过相机预览显示的实时图像,并且应用程序将能够使用OpenCV库进行图像处理和计算机视觉任务。 以上是在Android Studio中配置OpenCV库的基本步骤。使用OpenCV库,你可以实现图像分割、特征检测、目标追踪等计算机视觉应用程序,使你的Android应用程序更加出色。 ### 回答3: 为了在Android Studio中使用OpenCV,需要进行以下几个步骤: 1. 下载OpenCVAndroid SDK。 去OpenCV官方网站https://opencv.org/releases/下载所需版本的SDK,然后解压到本地目录。 2. 在Android Studio中创建一个新项目。 在创建项目的过程中,选择“Empty Activity”,并将项目命名为“OpenCVDemo”。 3. 配置项目的build.gradle文件。 在项目的根目录下的build.gradle文件中添加以下内容: ```java // Add this line to the repository section maven { url "https://opencv.org/releases" } // Add this line to the dependencies section implementation 'org.opencv:opencv-android:3.4.1' ``` 这将在项目中添加OpenCV的依赖关系。 4. 将OpenCV库添加到项目中。 从OpenCVAndroid SDK中找到libopencv_java3.so文件,并将其拷贝到项目的libs目录中。 5. 配置AndroidManifest.xml文件。 在此文件中,添加以下内容: ```xml <uses-permission android:name="android.permission.CAMERA" /> <application> <activity android:name=".MainActivity" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <uses-library android:name="org.opencv.engine" android:required="false" /> </application> ``` 这样可以请求使用相机权限,并添加OpenCV引擎库。 6. 配置MainActivity文件。 将MainActivity文件中的内容替换为以下内容: ```java import org.opencv.android.OpenCVLoader; public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 { private CameraBridgeViewBase mOpenCvCameraView; private Mat mRgba; private Mat mGray; static { if (!OpenCVLoader.initDebug()) { Log.d("MainActivity", "OpenCV not loaded"); } else { Log.d("MainActivity", "OpenCV loaded"); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.activity_main); mOpenCvCameraView = findViewById(R.id.JavaCameraView); mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); mOpenCvCameraView.setCvCameraViewListener(this); } @Override public void onResume() { super.onResume(); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, this, mLoaderCallback); } @Override public void onPause() { super.onPause(); if (mOpenCvCameraView != null) mOpenCvCameraView.disableView(); } public void onDestroy() { super.onDestroy(); if (mOpenCvCameraView != null) mOpenCvCameraView.disableView(); } public void onCameraViewStarted(int width, int height) { mRgba = new Mat(height, width, CvType.CV_8UC4); mGray = new Mat(height, width, CvType.CV_8UC1); } public void onCameraViewStopped() { mRgba.release(); mGray.release(); } public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { mRgba = inputFrame.rgba(); Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGBA2GRAY); return mGray; } private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i("MainActivity", "OpenCV loaded successfully"); mOpenCvCameraView.enableView(); break; } default: { super.onManagerConnected(status); break; } } } }; } ``` 这里包括了初始化OpenCV库并加载相机视野中每帧的图像,以及对该图像进行灰度处理的操作。 7. 运行项目 运行项目并查看输出。如果成功加载OpenCV库,则应看到“OpenCV loaded successfully”的消息。 以上就是在Android Studio中配置OpenCV的步骤。随着版本的更新,一些小变化可能会发生。但是,总体上来说,这是一个简单的过程,并且可以获取许多有用的功能和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值