opencv 利用形态学开操作提取水平或垂直线

#include <iostream>   
#include <opencv2\opencv.hpp>
#include <math.h>
using namespace cv;
using namespace std;

int main()
{

	Mat src = imread("E:\\3.jpg",IMREAD_UNCHANGED), dst;
	if (!src.data) {
		cout << "failed!" << endl;
		return 0;
	}
	namedWindow("input_image", WINDOW_AUTOSIZE);
	namedWindow("output_image", WINDOW_AUTOSIZE); 
	imshow("input_image", src);
	
	dst = Mat::zeros(src.size(), src.type());
	Mat gray;
	/*转化为灰度图像*/
	cvtColor(src, gray, COLOR_BGR2GRAY);
	/*转化为二值图像*/
	adaptiveThreshold(gray, dst, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 15, -2);
	
	/*提取的目标*/
	int xsize = dst.cols / 30;
	int ysize = dst.rows / 30;
	/*水平线*/
	Mat hor = getStructuringElement(MORPH_RECT, Size(xsize, 1), Point(-1, -1));
	/*垂直线*/
	Mat vec = getStructuringElement(MORPH_RECT, Size(1, ysize), Point(-1, -1));
	Mat hbin;
	hbin = Mat::zeros(dst.size(), dst.type());
	morphologyEx(dst, hbin, MORPH_OPEN, vec);
	imshow("output_image", hbin);
	waitKey(0);
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值