zoukankan      html  css  js  c++  java
  • OpenCV入门(一)

    View Code

    参考:http://blog.csdn.net/poem_qianmo/article/details/20537737

            这位同学挺牛的,才研一就出书了,实在是让人汗颜啊,不说了,多学习。

            这一篇主要讲了opencv中的几个基本函数imread,namewindow,imshow,imwrite,浅显易懂,非常的赞。

            ROI:感兴趣的区域。看看这位同学给的一段代码:

            先在原图中标出感兴趣的区域和大小,在原图此区域的地方和另外一幅图按着相应的权重进行混合,就得到一幅混合图像。

            具体可参考这篇博文:http://blog.csdn.net/poem_qianmo/article/details/20911629

            Mat imageROI;
        Mat logo = imread("logo.jpg");
    
        imageROI = m1(Rect(800, 350, logo.cols, logo.rows));
        addWeighted(imageROI, 0.3, logo, 0.6, 0., imageROI);
        namedWindow("【4】原画+logo图");
        imshow("【4】原画+logo图", m1);
    View Code

           Rect和Range是有差别的。Rect直接给出左上坐标和区域大小,Range是给出起始坐标和长度,这点需要注意。

          

           这一篇博文:http://blog.csdn.net/poem_qianmo/article/details/21176257主要讲了两个函数:split和merge

           当需要对RGB三个颜色通道的分量进行分别显示和调整时,通过OpenCV的split和merge方法可以很方便的达到目的。

           下面这段代码还是挺简单的,不过对于为什么logo会变色,值得注意,看看这位博友的回答,我觉得很好:

            blue,green,red都是单一通道的灰度图,其像素的灰度值代表的是该像素的亮度(注意是亮度而不是颜色),在Addweighed函数中,

            我们对BlueImagechannel和logoImage进行加权求和,实际上是对其灰度值进行求和,然后再把结果储存在dst中。最终输出结果的logo

            部分的颜色由dst决定,而BlueImage和logoimage只是决定输出结果的logo部分的亮度而已,不决定颜色。

    Mat srcImage;
        Mat logoImage;
        vector<Mat>channels;
        Mat  imageBlueChannel ,imageGreenChannel;
    
        logoImage = imread("dota_logo.jpg", 0);
        srcImage = imread("dota_jugg.jpg");
    
        if (!logoImage.data) { printf("Oh,no,读取logoImage错误~!
    "); return false; }
        if (!srcImage.data) { printf("Oh,no,读取srcImage错误~!
    "); return false; }
    
        split(srcImage, channels);//分离色彩通道  
    
        imageBlueChannel = channels.at(0);
        imageGreenChannel = channels.at(2);
        addWeighted(imageBlueChannel(Rect(500, 250, logoImage.cols, logoImage.rows)), 1.0,
            logoImage, 0.5, 0, imageGreenChannel(Rect(500, 250, logoImage.cols, logoImage.rows)));
    
        merge(channels, srcImage);
    
        namedWindow("<1>游戏原画+logo蓝色通道 by浅墨");
        imshow("<1>游戏原画+logo蓝色通道 by浅墨", srcImage);
    View Code

       

            

  • 相关阅读:
    [转]android刷新后R.java不见了
    adb常用指令
    [转]Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
    effective c/C++
    七种布局显示方式效果及实现
    修改Tabhost样式和字体大小的方法
    [转]android中SoundRecorder
    java中的IO整理
    在xp下面下载Android源代码
    linux网络 (二):无线网络操作
  • 原文地址:https://www.cnblogs.com/573177885qq/p/4482485.html
Copyright © 2011-2022 走看看