分享

opencv算术操作

 昵称14216904 2016-02-19

opencv算术操作

Code:

  1. #include <opencv2\core\core.hpp>  
  2. #include <opencv2\highgui\highgui.hpp>  
  3. #include <opencv2\imgproc\imgproc.hpp>  
  4. #include <iostream>  
  5.   
  6. using namespace std;  
  7. using namespace cv;  
  8.   
  9. Mat addWeight(Mat &image, Mat &image2)  
  10. {  
  11.     Mat result;  
  12.     //addWeighted(image, 0.5, image2, 0.5, 0.0, result);  
  13.     result = image*0.5 + image2*0.5 + 0.3;   // 大多数算术函数在opencv2中都有对应的重载操作符  
  14.     return result;  
  15. }  
  16.   
  17. Mat addWeight2(Mat &image, Mat &image3)  
  18. {  
  19.     Mat result;  
  20.     vector<Mat> planes;  
  21.     split(image, planes); /// 将一个彩色三通道图像分解为三个单通道图像  
  22.     planes[0] += image3;  
  23.     merge(planes, result);  /// 将三个单通道图像合并为一个彩色三通道图像  
  24.     return result;  
  25. }  
  26.   
  27. int main()  
  28. {  
  29.     Mat image = imread("F:\\huangrong.jpg", 1);  
  30.     if(!image.data){  
  31.         cout << "fail to load image" << endl;  
  32.         return 0;  
  33.     }  
  34.     Mat image2 =Mat::zeros(image.rows, image.cols, image.type());  
  35.     //Mat image2(image.rows, image.cols, image.type(), Scalar(255, 255, 255));  
  36.     Mat result;  
  37.     result = addWeight(image, image2);  
  38.   
  39.     Mat result2;  
  40.     Mat image3 = Mat::zeros(image.rows, image.cols, CV_8UC1);  
  41.     result2 = addWeight2(image, image3);  
  42.     namedWindow("image");  
  43.     imshow("image", image);  
  44.     namedWindow("image2");  
  45.     imshow("image2", image2);  
  46.     namedWindow("result");  
  47.     imshow("result", result);  
  48.     namedWindow("result2");  
  49.     imshow("result2", result2);  
  50.     waitKey(0);  
  51.     return 0;  
  52. }  

Explaination:

(1)  以 上实现的是两幅图像相加,即可用opencv自带的函数addWeighted,也可用重载的运算符+。其它如&,|,^,~等都被重载了。除了 加法,还有其它运算,如矩阵求逆m1.inv(),装置m1.t(),矩阵行列式m1.determinant()等

(2)  split(image, planes);和merger(planes,image); 分别是将一个彩色三通道图像分解为三个单通道图像和将三个单通道图像合并为一个彩色三通道图像

Result:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多