突然发现有一篇opencv操作mat数据的基础操作搞忘了,现在发出来,原来有一篇是只有操作结果,而且是用emgu写的,这里用c++实现并给出详细的代码。
数字图像处理其实就是处理二维矩阵数据。利用opencv来学习处理算法是一种比较好的方式。学习opencv,主要就是调用其中的图像处理函数来实现各种操作。如果要得到想要的处理结果,还需要对图像处理算法有一定的了解。同时,可能也有自己想写一些算法的冲动,并急切的想验证自己写的算法是否能够满足处理的要求。可是,真正到自己动手写的时候,总发现无从下手,比如,想得到图像中的ROI区域(感兴趣区域),想对图像做加减运算算,将两幅图像连接成一幅图像等等。如果要想随心所欲的按照自己的想法来操作一幅图像,则需要对opencv的mat数据操作非常熟练,建议初学者将这些基本的操作背下来,然后你会发现,你再进行这样的操作将是得心应手。
在opencv中对图像数据进行操作,我们可以简单的把mat数据看成一个二维数,里面存储的就是图像的数据,所以,对mat数组的操作就是在操作二维图像数据。下面我们来实现常见的Mat数据操作。
首先,在c++中新建一个空的控制台程序,然后,在属性管理器中添加我们之前设置好的opencv4.0配置文件,回到解决方案界面,选择源文件,右键添加新项目,然后得到一个空白的源文件,如图1和图2所示。
然后,就可以在这个空白的源文件中写代码了。下面用具体的代码来说明怎么操作mat数据。下面的代码都可以直接复制到自己的工程中直接运行如果涉及到要打开图像文件的,直接替换代码中的文件路径为自己电脑中的图像路劲就可以了。
int main(int argc, char** argv)
{
//构造3X3的Mat矩阵
// CV_8UC1和CV_8UC3是数据类型和通道,指8位无符号单通道和3数据,通道数据
Mat a(Size(3,3),CV_8UC1)