OpenCV(六):多通道分离与合并

目录

1.多通道分离split()

2.多通道合并merge()

[3.Android JNI demo](#3.Android JNI demo)


1.多通道分离split()

void cv::split ( InputArray m,

OutputArrayOfArrays mv

m:待分离的多通道图像。

mv:分离后的单通道图像,为向量vector形式。

2.多通道合并merge()

void cv::merge ( InputArrayOfArrays mv,

OutputArray dst

mv:需要合并的图像向量vector,其中每个图像必须拥有相同的尺寸和数据类型。

dst: 合并后输出的图像,通道数等于所有输入图像的通道数总和。

3.Android jni demo

#include <jni.h>
#include <string>
#include <android/bitmap.h>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <android/log.h>

#define LOG_TAG "xxx"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)

using namespace cv;
using namespace std;
extern "C"
JNIEXPORT void JNICALL
Java_com_example_myapplication_MainActivity_opencv_1test(JNIEnv *env, jclass clazz,
                                                         jobject bitmap) {
    AndroidBitmapInfo info;
    void *pixels;

    CV_Assert(AndroidBitmap_getInfo(env, bitmap, &info) >= 0);
    //判断图片是位图格式有RGB_565 、RGBA_8888
    CV_Assert(info.format == ANDROID_BITMAP_FORMAT_RGBA_8888 ||
              info.format == ANDROID_BITMAP_FORMAT_RGB_565);
    CV_Assert(AndroidBitmap_lockPixels(env, bitmap, &pixels) >= 0);
    CV_Assert(pixels);

    //将bitmap转化为Mat类
    Mat image(info.height, info.width, CV_8UC4, pixels);
    Mat imgs[4];
    split(image,imgs);

    Mat img0,img1,img2,img3;

    img0=imgs[0];
    img1=imgs[1];
    img2=imgs[2];
    img3=imgs[3];

    Mat img_H;
    merge(imgs,4,img_H);

    imwrite("/sdcard/DCIM/img_H.jpg",img_H);
    
    Mat zero=Mat::zeros(Size(image.cols,image.rows),CV_8UC1);

    vector<Mat> imgsV;
    imgsV.push_back(img0);
    imgsV.push_back(img1);
    imgsV.push_back(img2);
    imgsV.push_back(img3);

    Mat imgsVH;
    merge(imgsV,imgsVH);

    imwrite("/sdcard/DCIM/imgsVH.jpg",imgsVH);
}
相关推荐
萌面小侠Plus1 小时前
Android笔记(三十三):封装设备性能级别判断工具——低端机还是高端机
android·性能优化·kotlin·工具类·低端机
慢慢成长的码农1 小时前
Android Profiler 内存分析
android
大风起兮云飞扬丶1 小时前
Android——多线程、线程通信、handler机制
android
L72561 小时前
Android的Handler
android
清风徐来辽1 小时前
Android HandlerThread 基础
android
凤枭香2 小时前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv
HerayChen2 小时前
HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
android·macos·智能手机
顾北川_野2 小时前
Android 手机设备的OEM-unlock解锁 和 adb push文件
android·java
hairenjing11232 小时前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机
小黄人软件2 小时前
android浏览器源码 可输入地址或关键词搜索 android studio 2024 可开发可改地址
android·ide·android studio