OpenCV(四):Mat支持的运算

简介: OpenCV(四):Mat支持的运算



1.对两个 Mat 对象按元素进行运算,有加法、减法、乘法和除法等运算。

加法:Mat + Mat,保存到 result 中

cv::add(mat1, mat2, result);

减法: Mat - Mat,保存到 result 中

cv::subtract(mat1, mat2, result);

乘法 Mat * Mat,保存到 result 中

cv::multiply(mat1, mat2, result);

除法: Mat / Mat,保存到 result 中

cv::divide(mat1, mat2, result);

2.Mat类支持逻辑与、或、非等逻辑运算,

逻辑与:Mat1 & Mat2,保存到 result(像素一和像素二都为1,则结果为1,否则为0)

cv::bitwise_and(mat1, mat2, result);

逻辑或:Mat1 | Mat2,保存到 result(像素一和像素二都为0,则结果为0,否则为1)

cv::bitwise_or(mat1, mat2, result);

逻辑非:~Mat1,保存到 result(像素为0,则结果为1,像素为1,则结果为0)

cv::bitwise_not(src, 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__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
using namespace cv;
using namespace std;
extern "C"
JNIEXPORT void JNICALL
Java_com_example_myapplication_MainActivity_test(JNIEnv *env, jclass clazz) {
    Mat mat2 = (Mat_<int>(1, 5) << 1, 2, 3, 4, 5);
    Mat mat1 = (Mat_<int>(1, 5) << 4, 5, 6, 7, 8);
   Mat result(1,5,CV_8S);
    cv::add(mat1, mat2, result);//加法
   // cv::subtract(mat1, mat2, result);//减法
    //cv::multiply(mat1, mat2, result);//乘法
    //cv::divide(mat1, mat2, result);//除法
   // cv::bitwise_and(mat1, mat2, result);//与&
  // cv::bitwise_or(mat1, mat2, result);//或|
  //cv::bitwise_not(src, dst);//非~
    ostringstream ss;
    ss << "result data:" << std::endl;
    // 遍历并输出像素值
    for (int i = 0; i < result.rows; i++) {
        for (int j = 0; j < result.cols; j++) {
            // 获取像素值
            int value = result.at<int>(i, j);
            // 构建输出字符串
            ss <<value << " ";
        }
        ss << std::endl;
    }
    LOGD("%s",ss.str().c_str());
}
目录
相关文章
|
6月前
|
存储 新制造 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C++)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C++)
81 2
|
6月前
|
计算机视觉 Python
OpenCV中图像的开、闭运算讲解与实战应用(附Python源码)
OpenCV中图像的开、闭运算讲解与实战应用(附Python源码)
161 0
|
存储 Cloud Native Linux
OpenCV 图像像素运算操作
OpenCV 图像像素运算操作
|
计算机视觉
OpenCV-顶帽运算(TOPHAT)
OpenCV-顶帽运算(TOPHAT)
152 0
|
计算机视觉
OpenCV-闭运算(CLOSE)
OpenCV-闭运算(CLOSE)
|
6月前
|
计算机视觉 Python
OpenCV形态学运算中梯度运算、顶帽、黑帽运算讲解与实战应用(附Python源码)
OpenCV形态学运算中梯度运算、顶帽、黑帽运算讲解与实战应用(附Python源码)
156 0
|
6月前
|
计算机视觉 Python
OpenCV中图像的掩模、加法运算讲解与实战(附Python源码)
OpenCV中图像的掩模、加法运算讲解与实战(附Python源码)
412 0
|
6月前
|
算法 API 计算机视觉
OpenCV(图像处理)-基于Python-形态学处理-开运算、闭运算、顶帽、黑帽运算
1. 形态学 OpenCV形态学是一种基于OpenCV库的数字图像处理技术,主要用于处理图像的形状、结构和空间关系。它包括一系列图像处理工具和算法,包括膨胀、腐蚀、开运算、闭运算、形态学梯度、顶帽、黑帽等。
122 0
|
6月前
|
存储 新制造 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C#)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C#)
71 0
|
5月前
|
存储 算法 API
OpenCV 3.1.0中的Mat对象使用
OpenCV 3.1.0中的Mat对象使用
37 2
下一篇
无影云桌面