普通边缘检测:
//x方向检测边缘
void FindEdge::EasyFindEdgeX(Mat &img) {
Mat dst;
Mat kernel = (Mat_<float>(1,2) << 1,-1);//检测滤波器[-1,1]
filter2D(img,dst,CV_16S,kernel);
convertScaleAbs(dst,dst);
imshow("EasyFindEdgeX",dst);
}
//x方向检测边缘
void FindEdge::FindEdgeX(Mat &img) {
Mat dst;
Mat kernel = (Mat_<float>(1,3) << 1,0,-1);//检测滤波器[1,0,-1]
filter2D(img,dst,CV_16S,kernel);
convertScaleAbs(dst,dst);
imshow("FindEdgeX",dst);
}
//y方向检测边缘
void FindEdge::FindEdgeY(Mat &img) {
Mat dst;
Mat kernel = (Mat_<float>(3,1) << 1,0,-1);//检测滤波器[1,0,-1]
filter2D(img,dst,CV_16S,kernel);
convertScaleAbs(dst,dst);
imshow("FindEdgeY",dst);
}
//45度方向检测边缘
void FindEdge::FindEdgeXY45(Mat &img) {
Mat dst;
Mat kernel = (Mat_<float>(2,2) << 0,1,-1,0);//检测滤波器[0,1,-1,0]
filter2D(img,dst,CV_16S,kernel);
convertScaleAbs(dst,dst);
imshow("FindEdgeXY45",dst);
}
//135度方向检测边缘
void FindEdge::FindEdgeXY135(Mat &img) {
Mat dst;
Mat kernel = (Mat_<float>(2,2) << 1,0,0,-1);//检测滤波器[1,0,0,-1]
filter2D(img,dst,CV_16S,kernel);
convertScaleAbs(dst,dst);
imshow("FindEdgeXY135",dst);
}