顶帽=原图-开操作
黑帽=闭操作-原图
顶帽与黑帽作用提取图像中微小有用信息块(二值图像分析工业缺陷品检测应用)
顶帽=原图-开操作
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src = imread("C:/newword/image/17.png");
if (src.empty()) {
printf("no");
return -1;
}
Mat srv, srb,tc;
cvtColor(src, srv, COLOR_BGR2GRAY);
threshold(srv, srb, 0, 255, THRESH_BINARY_INV | THRESH_OTSU);
imshow("skb", srb);
Mat kernel = getStructuringElement(MORPH_ELLIPSE, Size(5, 5), Point(-1, -1));
morphologyEx(srb, tc, MORPH_TOPHAT, kernel);
//erode(srv, srv, kernel);
imshow("skb1", tc);
dilate(srv, srv, kernel);
imshow("skb2", srv);
waitKey(0);
return 0;
}
黑帽=闭操作-原图
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src = imread("C:/newword/image/17.png");
if (src.empty()) {
printf("no");
return -1;
}
Mat srv, srb,tc;
cvtColor(src, srv, COLOR_BGR2GRAY);
threshold(srv, srb, 0, 255, THRESH_BINARY_INV | THRESH_OTSU);
imshow("skb", srb);
Mat kernel = getStructuringElement(MORPH_ELLIPSE, Size(15, 15), Point(-1, -1));
morphologyEx(srb, tc, MORPH_BLACKHAT, kernel);
//erode(srv, srv, kernel);
imshow("skb1", tc);
dilate(srv, srv, kernel);
imshow("skb2", srv);
waitKey(0);
return 0;
}
击中击不中
Mat kernel = getStructuringElement(MORPH_ELLIPSE(需要调整相关的结构元素), Size(15, 15), Point(-1, -1));--
morphologyEx(srb, tc, MORPH_HITMISS, kernel);