这里写自定义目录标题
Opencv中简单的图像分割
图像分割:将图像分成若干有相似区域性质的区域。
主要方法:基于阈值、基于区域、基于边缘、基于聚类、基于图论、基于深度学习。
参考链接: opencv图像分割方法.
本文头文件及命名空间:
#pragma once
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
阈值分割
基于阈值分割,使用opencv中二值化函数,threshold(),选择不同的类型和阈值对图像进行分割。本质是二值化,只能区分与分割一些像素值间隔打、色彩单一的简单图像。
src : 输入图像
dst : 输出图像
thresh : 阈值
maxval : 最大值
type : 二值化类型
不同类型的具体取值由下列函数得出:
测试代码:
//阈值分割
Mat m1 = imread(path4, 1);
Mat m2, m3, m4;
//图像灰度化,也可以不灰度化,这里为了让结果更容易理解
cvtColor(m1, m1, COLOR_BGR2GRAY);
//类型1
threshold(m1, m2, 127, 255, THRESH_BINARY);
//类型2
threshold(m1, m3, 127, 255, THRESH_BINARY_INV);
//类型3
threshold(m1, m4, 127, 255, THRESH_TRUNC);
imshow("truth image" , m1);
imshow("1 image", m2);
imshow("2 image", m3);
imshow("3 image", m4);
waitKey(0);
测试结果(图像来源网络,侵权告知立即删除)
二值化函数阈值分割的结果由所选取的阈值和类型决定,只能分割简单图像。
分水岭分割
分水岭分割使用分水岭方法,实现图像不同区域的分割。