形态学变化应用

形态学变化应用

#include<opencv2/opencv.hpp>

int main() {
	cv::Mat xian = cv::imread("D:\\pic\\xian.jpg");
	cv::Mat zimu = cv::imread("D:\\pic\\zimu.jpg");

	//转化为灰度图
	cv::Mat xian_gray, zimu_gray;
	cv::cvtColor(xian, xian_gray, CV_BGR2GRAY);
	cv::cvtColor(zimu, zimu_gray, CV_BGR2GRAY);

	//二值化
	cv::Mat xian_gray_thre, zimu_gray_thre;
	cv::threshold(xian_gray, xian_gray_thre, 0, 255, CV_THRESH_OTSU | CV_THRESH_BINARY_INV);
	cv::threshold(zimu_gray, zimu_gray_thre, 0, 255, CV_THRESH_OTSU | CV_THRESH_BINARY_INV);

	//获取结构元素
	cv::Mat hline = cv::getStructuringElement(CV_SHAPE_RECT,
		cv::Size(xian.cols / 16, 1));	//水平线
	cv::Mat vline = cv::getStructuringElement(CV_SHAPE_RECT,
		cv::Size(1, xian.rows / 16));	//垂直线
	cv::Mat kernel = cv::getStructuringElement(CV_SHAPE_RECT,
		cv::Size(3, 3));				//矩形
	
	cv::Mat temp, hline_dst, vline_dst;

	//提取水平线
	cv::morphologyEx(xian_gray_thre, temp, CV_MOP_OPEN, hline);
	cv::bitwise_not(temp, hline_dst);

	//提取垂直线
	cv::morphologyEx(xian_gray_thre, temp, CV_MOP_OPEN, vline);
	cv::bitwise_not(temp, vline_dst);

	//提取字母
	cv::Mat zimu_dst;
	cv::morphologyEx(zimu_gray_thre, zimu_dst, CV_MOP_OPEN, kernel);

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
形态学算子是一类用于图像处理和分析的数学算子,用于改变或提取图像的形状和结构。在Python中,可以使用OpenCV和scikit-image库来应用形态学算子。 下面是一些常用的形态学算子及其在Python中的实现方法: 1. 腐蚀(Erosion):用于消除图像中的小对象或者分离相邻的物体。在OpenCV中,可以使用cv2.erode()函数实现;在scikit-image中,可以使用morphology.erode()函数实现。 2. 膨胀(Dilation):用于填充图像中的空洞或者连接相邻的物体。在OpenCV中,可以使用cv2.dilate()函数实现;在scikit-image中,可以使用morphology.dilate()函数实现。 3. 开运算(Opening):先进行腐蚀操作,再进行膨胀操作。用于去除图像中的噪声和小对象。在OpenCV中,可以使用cv2.morphologyEx()函数,设置参数为cv2.MORPH_OPEN实现;在scikit-image中,可以使用morphology.opening()函数实现。 4. 闭运算(Closing):先进行膨胀操作,再进行腐蚀操作。用于填充图像中的空洞和连接相邻的物体。在OpenCV中,可以使用cv2.morphologyEx()函数,设置参数为cv2.MORPH_CLOSE实现;在scikit-image中,可以使用morphology.closing()函数实现。 5. 梯度(Gradient):用于检测图像中物体边缘的变化。在OpenCV中,可以使用cv2.morphologyEx()函数,设置参数为cv2.MORPH_GRADIENT实现;在scikit-image中,可以使用morphology.gradient()函数实现。 6. 顶帽(Top Hat):用于检测图像中比周围亮的小区域。在OpenCV中,可以使用cv2.morphologyEx()函数,设置参数为cv2.MORPH_TOPHAT实现;在scikit-image中,可以使用morphology.white_tophat()函数实现。 7. 底帽(Black Hat):用于检测图像中比周围暗的小区域。在OpenCV中,可以使用cv2.morphologyEx()函数,设置参数为cv2.MORPH_BLACKHAT实现;在scikit-image中,可以使用morphology.black_tophat()函数实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值