形态学变化应用
#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;
}