by Leozheng @ SRMVision
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
//----------------读取图像----------------
Mat img = imread("test.png", 0); // 0 表示将图片转化为灰度图
Mat resultX, resultY, resultXY;
//-------------Sobel 边缘检测-------------
// X 方向一阶边缘
Sobel(img, resultX, CV_16S, 2, 0, 1);
convertScaleAbs(resultX, resultX); // 转化结果回到 uint8 类型
// Y 方向一阶边缘
Sobel(img, resultY, CV_16S, 0, 1, 3);
convertScaleAbs(resultY, resultY);
// 整幅图像的一阶边缘
addWeighted(resultX, 0.5, resultY, 0.5, 0, resultXY);
// 显示图像
imshow("resultX", resultX);
imshow("resultY", resultY);
imshow("resultXY", resultXY);
waitKey(0);
return 0;
}
#include <opencv2/opencv.hpp>
using namespace cv;
int main(){
auto img = imread("test.png", 0);
threshold(img, img, 180, 255, THRESH_BINARY);
auto kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
Mat img_erode, img_dilate;
erode(img, img_erode, kernel); // 腐蚀
dilate(img, img_dilate, kernel); // 膨胀
imshow("erode", img_erode);
imshow("dilate", img_dilate);
waitKey(0);
destroyAllWindows();
return 0;
}
1. 自学OpenCV卷积函数,实现如右上图一样的雕刻感。
2. 实现一个横向模糊的滤镜,实现效果如右下图。
上交源码与运行截图
@ SRMVision