From e246ce8c1fe58234d05c7a7513bba9bae612ea81 Mon Sep 17 00:00:00 2001 From: "aurelien.lohmann" Date: Wed, 30 Mar 2022 11:19:22 +0200 Subject: [PATCH] added edge detection with camera feed --- contour_detection | Bin 0 -> 85056 bytes contour_detection.cpp | 37 +++++++++++++++++++++++++++++++++++++ makefile | 7 +++++-- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100755 contour_detection create mode 100644 contour_detection.cpp diff --git a/contour_detection b/contour_detection new file mode 100755 index 0000000000000000000000000000000000000000..4b28a9fb12ea3b973390d3ac94634fb6298ad294 GIT binary patch literal 85056 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 Y-+rll6-M2)SNca6%9!)D1X|Gg- +#include +#include +#include +int main() +{ + cv::VideoCapture camera(0); + if (!camera.isOpened()) + { + std::cerr << "[ERROR] Could not open the camera!" << std::endl; + return 1; + } + //cv::namedWindow("Webcam", cv::WINDOW_AUTOSIZE); + while(true) + { + cv::Mat frame; + camera >> frame; + cv::imshow("Webcam", frame); + cv::Mat frame_gray; + cv::cvtColor(frame, frame_gray, cv::COLOR_BGR2GRAY); + cv::imshow("gray", frame_gray); + cv::Mat frame_thresh; + threshold(frame_gray, frame_thresh, 150, 255, cv::THRESH_BINARY); + cv::imshow("thresh", frame_thresh); + std::vector> contours; +std::vector hierarchy; + findContours(frame_thresh, contours, hierarchy, cv::RETR_TREE, cv::CHAIN_APPROX_NONE); + cv::Mat frame_contours = frame.clone(); + drawContours(frame_contours, contours, -1, cv::Scalar(255, 0, 0), 2); + cv::imshow("contours", frame_contours); + if (cv::waitKey(30) >= 0){ + + break; + } + } + return 0; +} diff --git a/makefile b/makefile index 79ec614..e88a5f9 100644 --- a/makefile +++ b/makefile @@ -1,5 +1,8 @@ -all: hello_world - g++ hello_world.o -o hello_world -L/usr/lib/x86_64-linux-gnu -lopencv_core -lopencv_highgui -lopencv_imgproc +all: contour_detection + g++ contour_detection.o -o contour_detection -L/usr/lib/x86_64-linux-gnu -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_videoio + +contour_detection: contour_detection.cpp + g++ -c contour_detection.cpp -I/usr/include/opencv4/opencv2 -I/usr/include/opencv4 main: main.cpp g++ -c main.cpp -I/usr/include/opencv4