123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #include <opencv2/opencv.hpp>
- #pragma comment(lib, "opencv_world4100.lib")
- using namespace cv;
- using namespace std;
- int main(int argc, char *argv[])
- {
- if (argc != 2) {
- puts("Usage: cv04_removeShadow image\n");
- return 8;
- }
- Mat src = imread(argv[1]);
-
- Mat gray;
- cvtColor(src, gray, COLOR_BGR2GRAY);
-
-
- Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));
- int iteration = 9;
-
- Mat dilateMat;
- morphologyEx(gray, dilateMat, MORPH_DILATE, element, Point(-1, -1), iteration);
-
-
- Mat erodeMat;
- morphologyEx(dilateMat, erodeMat, MORPH_ERODE, element, Point(-1, -1), iteration);
-
-
- Mat calcMat = ~(erodeMat - gray);
-
-
- Mat removeShadowMat;
- normalize(calcMat, removeShadowMat, 0, 200, NORM_MINMAX);
-
-
- imwrite("removeShadow.png", removeShadowMat);
- return 0;
- }
|