安徽網(wǎng)站設(shè)計(jì)流程軟文發(fā)布平臺(tái)媒體
目錄
1.多通道分離split()?
2.多通道合并merge()?
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,其中每個(gè)圖像必須擁有相同的尺寸和數(shù)據(jù)類(lèi)型。
dst: 合并后輸出的圖像,通道數(shù)等于所有輸入圖像的通道數(shù)總和。
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_8888CV_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轉(zhuǎn)化為Mat類(lèi)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);
}