OpenCV基础课程笔记13提取水平竖直线

写在前面

一般提取水平竖直线都是相对于二值图像来说的,要先对原始图像二值化处理。

代码只跑找到竖线的算法(横线换一个结构体就行了)

代码

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

int main() {
	Mat src = imread("A:\\专用\\TestForTheCV\\class13水平垂直线.jpg");
	imshow("图片", src);

	Mat gray_src;
	cvtColor(src, gray_src, CV_BGR2GRAY);

	Mat binary_src;
	adaptiveThreshold(gray_src, binary_src, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);


	//定义两个结构体,分别是横线和竖线
	Mat hline = getStructuringElement(MORPH_RECT, Size(src.cols / 16, 1), Point(-1, -1));
	Mat vline = getStructuringElement(MORPH_RECT, Size(1, src.rows/10), Point(-1, -1));

	//进行开操作
	Mat dst;
	erode(binary_src, dst, hline);
	dilate(dst, dst, hline);

	//直接开操作
	Mat dstt;
	morphologyEx(binary_src, dstt, CV_MOP_OPEN, vline);

	//为了好看,咱们将图像反色,然后做一下均值滤波,更圆滑
	bitwise_not(dstt, dstt);
	imshow("result", dstt);

	blur(dstt, dstt, Size(3, 3));
	imshow("result after bluring", dstt);



	waitKey(0);
	return 0;
}

结果

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCVSharp中,可以使用HoughLinesP方法从点集中提取直线。Hough变换是一种广泛用于计算机视觉和图像处理的技术,可以用于检测图像中的直线、圆等几何形状。 HoughLinesP方法可以从二值化图像中检测直线。在使用该方法之前,需要将原始图像转换为二值化图像。如果原始图像包含多个颜色或灰度级别,可以使用阈值化技术将其转换为二值化图像。 以下是一个示例代码,演示如何使用OpenCVSharp从点集中提取直线: ```csharp using OpenCvSharp; using OpenCvSharp.Extensions; // 生成一组点 var points = new[] { new Point(0, 0), new Point(100, 100), new Point(200, 0) }; // 创建一个空图像 var img = new Mat(200, 200, MatType.CV_8UC1, Scalar.All(0)); // 在图像上绘制点 foreach (var point in points) { img.Circle(point, 2, Scalar.White, -1); } // 将图像转换为二值化图像 var binaryImg = new Mat(); Cv2.CvtColor(img, binaryImg, ColorConversionCodes.BGR2GRAY); Cv2.Threshold(binaryImg, binaryImg, 127, 255, ThresholdTypes.Binary); // 从二值化图像中提取直线 var lines = Cv2.HoughLinesP(binaryImg, 1, Math.PI / 180, 50, 50, 10); // 在图像上绘制直线 foreach (var line in lines) { img.Line(line.P1, line.P2, Scalar.Red, 2); } // 显示图像 Cv2.ImShow("Lines", img); Cv2.WaitKey(0); ``` 此代码生成一个包含三个点的图像,并创建一个二值化图像。然后,它使用HoughLinesP方法从二值化图像中检测直线,并在图像上绘制直线。最后,它显示包含直线的图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值