矩阵的掩膜操作

2019-03-06  本文已影响0人  榆杨丶
#include<opencv2\opencv.hpp>
#include<iostream>
#include<math.h>
using namespace cv;


int main(int argc,char** argv)
{
    Mat src=imread("C:/Users/HU/Desktop/82dcdd06.jpg");
    if(src.empty())
    {
        printf("could't load image...\n");
        return -1;
    }
    namedWindow("opencv setup demo",CV_WINDOW_AUTOSIZE);//创建一个名为opencv setup demo 自动调整窗口大小的窗口
    imshow("opencv setup demo",src);
    /*int cols=(src.cols-1)*src.channels();
    int offsetx=src.channels();
    int rows=src.rows;
    Mat dst=Mat::zeros(src.size(),src.type());
    for(int row=1;row<(rows-1);row++)
    {
        const uchar* current= src.ptr<uchar>(row);
        const uchar* previous= src.ptr<uchar>(row-1);
        const uchar* next= src.ptr<uchar>(row+1);
        uchar* output=dst.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]));
        }
    }
    waitKey(0);*/

    //修改图像
    Mat dst=Mat::zeros(src.size(),src.type());
      Mat kern = (Mat_<char>(3, 3) << 0, -1, 0,-1, 5, -1,0, -1, 0);
    filter2D(src, dst, src.depth(), kern); //另一种掩膜处理方式
    
    namedWindow("opencv",CV_WINDOW_AUTOSIZE);
    imshow("opencv",dst);
    waitKey(0);
    //保存图像


    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读