SensingLab3/contour_detection.cpp

38 lines
1.0 KiB
C++

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/videoio.hpp>
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<std::vector<cv::Point>> contours;
std::vector<cv::Vec4i> 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;
}