今天正式开始学习 opencv ,每日做一些笔记,方便以后学习,同时也希望能够帮到大家。
好了,话不多说。
开始
读取图片 -> 灰度化 -> 二值图 -> 开运算。
#include
#include
#include
#include
using namespace cv;
int main()
{
Mat dst, out, out2;
Mat img = imread("1.png", 0); //读取图片 转灰度图
threshold(img, dst, 200, 240, THRESH_BINARY_INV); //二值图
Mat hkernel = getStructuringElement(MORPH_RECT, Size(1, 40)); //定义指定形状的窗口卷积
Mat vkernel = getStructuringElement(MORPH_RECT, Size(40, 1));//定义指定形状的窗口卷积
morphologyEx(dst, out, MORPH_OPEN, hkernel); //开运算
morphologyEx(dst, out2, MORPH_OPEN, vkernel); //开运算
imshow("q", out);
waitKey(0);
imshow("q", out2);
waitKey(0);
}
看这样子就提取出来了。
垂直线做差 -> 水平线做差 -> 开运算 -> 膨胀。
#include
#include
#include
#include
using namespace cv;
int main()
{
Mat dst, out, out2;
Mat img = imread("1.png", 0); //读取图片 转灰度图
threshold(img, dst, 200, 240, THRESH_BINARY_INV); //二值图
Mat hkernel = getStructuringElement(MORPH_RECT, Size(1, 40)); //定义指定形状的窗口卷积
Mat vkernel = getStructuringElement(MORPH_RECT, Size(40, 1));//定义指定形状的窗口卷积
morphologyEx(dst, out, MORPH_OPEN, hkernel); //开运算
morphologyEx(dst, out2, MORPH_OPEN, vkernel); //开运算
subtract(dst, out, dst); //做差
subtract(dst, out2, dst); //做差
Mat close_ones = Mat::ones(Size(3, 3), CV_8UC1);
morphologyEx(dst, dst, MORPH_OPEN, close_ones, Point(-1, -1), 1); //开运算
dilate(dst, dst, close_ones); //膨胀
imshow("1", dst);
waitKey(0);
}