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

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



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);
}
目录
相关文章
|
5月前
|
计算机视觉 Python
OpenCV中拆分通道、合并通道、alpha通道的讲解及实战演示(附python源码 超详细)
OpenCV中拆分通道、合并通道、alpha通道的讲解及实战演示(附python源码 超详细)
137 0
|
7月前
|
计算机视觉
OpenCV-通道合并cv::merge
OpenCV-通道合并cv::merge
|
7月前
|
计算机视觉 容器
OpenCV-通道分离cv::split
OpenCV-通道分离cv::split
|
5月前
|
计算机视觉 开发者 Python
OpenCV合并图像中加权和与覆盖的讲解与实战(附Python源码)
OpenCV合并图像中加权和与覆盖的讲解与实战(附Python源码)
97 0
|
2月前
|
计算机视觉 Python
OpenCV 4基础篇| OpenCV图像的拆分和合并
OpenCV 4基础篇| OpenCV图像的拆分和合并
|
7月前
|
机器学习/深度学习 缓存 人机交互
OpenCV-实现背景分离(可用于更改证件照底色)
OpenCV-实现背景分离(可用于更改证件照底色)
206 1
|
数据安全/隐私保护 计算机视觉 Python
OpenCV基本功 之 图像的掩模、运算 & 合并专题 -小啾带学【Python-Open_CV系列(七)】(上)
OpenCV基本功 之 图像的掩模、运算 & 合并专题 -小啾带学【Python-Open_CV系列(七)】
716 0
OpenCV基本功 之 图像的掩模、运算 & 合并专题 -小啾带学【Python-Open_CV系列(七)】(上)
|
数据安全/隐私保护 计算机视觉 Python
OpenCV基本功 之 图像的掩模、运算 & 合并专题 -小啾带学【Python-Open_CV系列(七)】(下)
OpenCV基本功 之 图像的掩模、运算 & 合并专题 -小啾带学【Python-Open_CV系列(七)】
181 0
OpenCV基本功 之 图像的掩模、运算 & 合并专题 -小啾带学【Python-Open_CV系列(七)】(下)
|
计算机视觉
【OpenCV学习】前后背景分离
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ /* Demo of the background/foreground detection algorithme */ #include "cv.
760 0
|
13天前
|
计算机视觉 Python
轻松掌握opencv的8种图像变换
轻松掌握opencv的8种图像变换