快速上手OpenCV图像处理

快速上手OpenCV图像处理


在写作之时,笔者已经接触OpenCV大概三个月了,从刚开始配置环境的“艰辛”,到能用OpenCV完成一些视觉类的小工程,这一路上遇到了不少坑,也是很后悔在学习之初没想过把这些坑记录下来。面对新项目时,仍深觉自己的思路非常局限,所以借着寒假时间较为充裕,带着我对OpenCV的爱,重新上路。
快速上手OpenCV,可以从几个简单的程序开始。
在每个程序执行之前都需采取类似操作——在Visual Studio中新建项目,新建文件夹,放置图片到cpp源文件同一目录下。【后不再说明

图像显示

在OpenCV3中,图像显示过程很简单,只需要用imread函数载入到图像存储数据结构Mat类中,然后用imshow函数显示即可。

#include<iostream>
#include <opencv2/opencv.hpp> 
using namespace cv;

int main()

{

	Mat img = imread("fg.jpg");

	imshow("fg", img);

	waitKey(10000);

}

在这里插入图片描述

图像腐蚀

用暗色部分腐蚀掉图像中的高亮部分——erode函数
OpenCV highgui模块头文件
OpenCV图像处理头文件

#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;

int main()
{
	Mat srcImage = imread("fg.jpg");
	imshow("[原图]腐蚀操作", srcImage);
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
	Mat dstImage;
	erode(srcImage, dstImage, element);
	imshow("[效果图]腐蚀操作", dstImage);
	waitKey(0);

	return 0;
}

在这里插入图片描述

图像模糊

用OpenCV对图像进行均值滤波操作——blur函数

#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;

int main()
{
	Mat srcImage = imread("fg.jpg");
	imshow("[原图]均值滤波", srcImage);

	Mat dstImage;
	blur(srcImage, dstImage, Size(7, 7));
	imshow("[效果图]均值滤波", dstImage);
	waitKey(0);

	return 0;
}

在这里插入图片描述

Canny边缘检测

载入图像,将其转为灰度图,再用blur函数进行图像模糊以降噪,然后用canny函数进行边缘检测

#include<opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;

int main()
{
	Mat srcImage = imread("fg.jpg");
	imshow("[原图]Canny边缘检测", srcImage);

	Mat dstImage, edge,grayImage;
	dstImage.create(srcImage.size(), srcImage.type());
	cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);
	blur(grayImage, edge, Size(3,3));
	Canny(edge, edge, 3, 9, 3);
	imshow("[效果图]Canny边缘检测", edge);
	waitKey(0);

	return 0;
}

在这里插入图片描述

发布了20 篇原创文章 · 获赞 14 · 访问量 857

猜你喜欢

转载自blog.csdn.net/weixin_43645790/article/details/104062207