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码表对于的字符信息。

  • 相关阅读:
    Epplus
    常用的android弹出对话框
    android 获取当前位置
    android:inputType参数类型说明
    PageRank算法
    XGBoost算法
    FP-growth算法
    卡方分布与卡方检验
    Apriori算法
    关联规则
  • 原文地址:https://www.cnblogs.com/kbqLibrary/p/12239063.html
Copyright © 2011-2022 走看看