本文主要是介绍opencv矩阵掩膜操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<opencv2/opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;int main()
{Mat src, dst;src = imread("D:/image/1.jpg", 1);if (src.empty()){cout << "无法加载图像" << endl;return -1;}imshow("操作前", src);double t = getTickCount();/*定义掩膜矩阵(卷积核)掩膜可以自己定义,不同矩阵效果不同0 -1 0-1 5 -1 掩膜可以自己定义,0 -1 0增加对比度如果中心像素比周围像素暗,就更暗如果中心像素比周围像素亮,就更亮*/Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);/*图像卷积运算函数filter2D(输入图像,输出图像,图像深度,卷积核,内核基准点,添加像素值,像素外推法);图像深度一般与输入图像一致卷积核就是之前定义的掩膜,也叫卷积核内核基准点可以不写,默认为cv::Point(-1,-1),也就是内核中心添加像素值可以不写,默认为0,该数值大于0图像变亮,小于0图像变暗像素外推法可以不写,默认为4,也就是对全部边界进行计算*/filter2D(src,dst,src.depth(),kernel,cv::Point(-1,-1),0,4);/*getTickCount():返回cpu从某一时刻(如从开机开始)的tick总次数getTickFrequency():返回cpu一秒钟的tick次数*/double time = (getTickCount() - t) / getTickFrequency();//获得运行时间,单位是秒cout << "运行" << time << "秒" << endl;imshow("操作后", dst);waitKey(0);return 0;
}
运行结果:
这篇关于opencv矩阵掩膜操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!