zoukankan      html  css  js  c++  java
  • 3. 掩模kernel运算

    掩模运算表示:在一幅图像中,对某个像素点附近的像素进行矩阵运算,最后获得结果赋值给该像素。掩模运算经常运用sobel算子、Laplace算子等各种求边缘的情况,具有很好的用途。掩模在opencv中被称为kernel,也被称为mask。在opencv中有函数filter2D(src, dst, depth, kernel)用于掩模运算。

    说明:depth与type的区别

    官方文档对Depth的解释是单独一个通道的类型,通俗的说就是图像中单独一个元素的类型,它可以有以下的类型:

    #define CV_8U 0
    #define CV_8S 1
    #define CV_16U 2
    #define CV_16S 3
    #define CV_32S 4
    #define CV_32F 5
    #define CV_64F 6
    #define CV_USRTYPE1 7

    Type是将Depth和通道个数混合在一起的一个类型,所以它的种类比较多:

    #define CV_8UC1 CV_MAKETYPE(CV_8U,1)
    #define CV_8UC2 CV_MAKETYPE(CV_8U,2)
    #define CV_8UC3 CV_MAKETYPE(CV_8U,3)
    #define CV_8UC4 CV_MAKETYPE(CV_8U,4)
    #define CV_8UC(n) CV_MAKETYPE(CV_8U,(n))
    
    #define CV_8SC1 CV_MAKETYPE(CV_8S,1)
    #define CV_8SC2 CV_MAKETYPE(CV_8S,2)
    #define CV_8SC3 CV_MAKETYPE(CV_8S,3)
    #define CV_8SC4 CV_MAKETYPE(CV_8S,4)
    #define CV_8SC(n) CV_MAKETYPE(CV_8S,(n))
    
    #define CV_16UC1 CV_MAKETYPE(CV_16U,1)
    #define CV_16UC2 CV_MAKETYPE(CV_16U,2)
    #define CV_16UC3 CV_MAKETYPE(CV_16U,3)
    #define CV_16UC4 CV_MAKETYPE(CV_16U,4)
    #define CV_16UC(n) CV_MAKETYPE(CV_16U,(n))
    
    #define CV_16SC1 CV_MAKETYPE(CV_16S,1)
    #define CV_16SC2 CV_MAKETYPE(CV_16S,2)
    #define CV_16SC3 CV_MAKETYPE(CV_16S,3)
    #define CV_16SC4 CV_MAKETYPE(CV_16S,4)
    #define CV_16SC(n) CV_MAKETYPE(CV_16S,(n))
    
    #define CV_32SC1 CV_MAKETYPE(CV_32S,1)
    #define CV_32SC2 CV_MAKETYPE(CV_32S,2)
    #define CV_32SC3 CV_MAKETYPE(CV_32S,3)
    #define CV_32SC4 CV_MAKETYPE(CV_32S,4)
    #define CV_32SC(n) CV_MAKETYPE(CV_32S,(n))
    
    #define CV_32FC1 CV_MAKETYPE(CV_32F,1)
    #define CV_32FC2 CV_MAKETYPE(CV_32F,2)
    #define CV_32FC3 CV_MAKETYPE(CV_32F,3)
    #define CV_32FC4 CV_MAKETYPE(CV_32F,4)
    #define CV_32FC(n) CV_MAKETYPE(CV_32F,(n))
    
    #define CV_64FC1 CV_MAKETYPE(CV_64F,1)
    #define CV_64FC2 CV_MAKETYPE(CV_64F,2)
    #define CV_64FC3 CV_MAKETYPE(CV_64F,3)
    #define CV_64FC4 CV_MAKETYPE(CV_64F,4)
    #define CV_64FC(n) CV_MAKETYPE(CV_64F,(n))

    代码:

    #include "opencv.h"
    
    int main()
    {
            string filename = "autum.jpg";
            cv::Mat src, dst;
            src = cv::imread(filename);
            cv::cvtColor(src, src, cv::COLOR_RGB2GRAY);
            cv::Mat kernel = (cv::Mat_<uchar>(3, 3) << 0, 1, 0, -1, 5, -1, 0, -1, 0);//给kernel赋值
            cv::filter2D(src, dst, src.depth(),kernel);
        
            cv::namedWindow("img", 0);
            cv::imshow("img", src);
            cv::namedWindow("otsu", 0);
            cv::imshow("otsu", dst);
    
            cout << src.depth() << src.type();
        
            cv::waitKey();
            return  0;
        
    }
  • 相关阅读:
    基于spark-streaming实时推荐系统
    xgb
    FM算法解析及Python实现
    FM算法
    计算广告
    转发推荐系统文章
    【spark】dataframe常见操作
    VS Code WSL 2 配置 Spring Boot 2
    Makefile
    Paper English
  • 原文地址:https://www.cnblogs.com/2Bthebest1/p/11021891.html
Copyright © 2011-2022 走看看