问题描述
去除图片中的干扰, 获取验证码信息
思路
形态学操作适合黑白图片, 因此需要二值化
- 图片转灰度并且取反
- 图片二值化
- 使用形态学闭操作过滤
实现代码
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
void main() {
Mat src = imread("F:/VisualStudioSpace/OpenCV/Resource/verifycode.jpg");
imshow("Source", src);
// 1. 转灰度并取反
Mat gray;
cvtColor(src, gray, COLOR_BGR2GRAY);
Mat flip_gray = ~gray;
imshow("flip_gray", flip_gray);
// 2. 图片二值化
Mat binary;
threshold(flip_gray, binary, 40, 255, THRESH_BINARY);
imshow("binary", binary);
// 3. 开操作过滤
Mat dst;
// 定义形态
Mat kernel = getStructuringElement(
MORPH_RECT, // 形态描述
Size(7, 7) // 定义卷积区域
);
morphologyEx(binary, dst, CV_MOP_OPEN, kernel);
imshow("OPEN", dst);
cvWaitKey(0);
}