zoukankan      html  css  js  c++  java
  • OPENCV对于Mat的理解和操作

    1,Mat 是用来存储图片的数据

    他会把图片变成矩阵

    Mat src;
    int main(int argc, char** argv){
    
         src = imread("F:\视觉\opencv\pic\MatTest.png");//读图片
        cout << "灰度化后" << endl; 
        cout << src << endl;
    }

    矩阵的格式如下

    图片时这样的:

    用dos显示是这样的

    灰度化之后是这样的

     怎么样是不是看上去有点熟悉

    没错,灰度化后直接把每个位置的像素的值,组成一个矩阵,

    而没有灰度化时是如图一所示。

    2,Mat获取某一点坐标的值

     cout << (int)src.ptr<uchar>(1)[1] << endl;

    锐化的案例:

    int cols = (src.cols-1)*src.channels();
        int rows = src.rows;
        int channels = src.channels();
        int offsetx = src.channels();
        Mat dst1 = Mat::zeros(src.size(), src.type());
        for (int row = 1; row < (rows - 1); row++) 
        {
            const uchar* previous = src.ptr<uchar>(row - 1);
            const uchar* current = src.ptr<uchar>(row);
            const uchar* next = src.ptr<uchar>(row + 1);
            uchar* output = dst1.ptr<uchar>(row);
            for (int col = offsetx; col < cols; col++) {
                output[col] = saturate_cast<uchar>(5 * current[col] - (current[col - offsetx] + current[col + offsetx] + previous[col] + next[col]));
            }
        }
        imshow("锐化转化后", dst1);
    src.ptr<uchar>(row);是获取第几行的指针
    src.ptr<uchar>(1)[1];默认是char类型,所以要转成int类型输出才能看得到,不然会输出Hex码表对于的字符信息。

  • 相关阅读:
    Oracle 调试存储过程
    页面加载完毕后调用js方法进行布局操控 已实验
    C# webserver实现短信发送(移动)
    作业历史记录
    VS控件全部丢失处理
    visual studio 安装SVN
    svn服务器迁移
    VS2008配置SVN
    VS2008 控件全部丢失解决
    定时收缩数据库日志
  • 原文地址:https://www.cnblogs.com/kbqLibrary/p/12239063.html
Copyright © 2011-2022 走看看