Open imsanjoykb opened 2 years ago
using namespace cv; using namespace std;
int main() { cv::Mat src = cv::imread("cards.jpg"); if (!src.data) return -1;
imshow("src", src); // Create binary image from source image cv::Mat bw; cv::cvtColor(src, bw, CV_BGR2GRAY); cv::threshold(bw, bw, 40, 255, CV_THRESH_BINARY | CV_THRESH_OTSU); imshow("bin", bw); // Fill holes cv::floodFill(bw,cv::Point2i(0,0),cv::Scalar(1)); for(int i=0;i<bw.rows*bw.cols;i++) { if(bw.data[i]==0) bw.data[i]=255; } cv::threshold(bw, bw, 40, 255, CV_THRESH_BINARY | CV_THRESH_OTSU); imshow("filled", bw); cv::Mat dist; cv::distanceTransform(bw, dist, CV_DIST_L2, 3); cv::normalize(dist, dist, 0, 1., cv::NORM_MINMAX); imshow("Distance Transform Image", dist); cv::threshold(dist, dist, .5, 1., CV_THRESH_BINARY);
// // Dilate a bit the dist image // Mat kernel1 = Mat::ones(7, 7, CV_8UC1); // dilate(dist, dist, kernel1); // erode(dist, dist, kernel1); // imshow("Peaks", dist);
// Create the CV_8U version of the distance image // It is needed for cv::findContours() cv::Mat dist_8u;
include <opencv2/opencv.hpp>
include
using namespace cv; using namespace std;
int main() { cv::Mat src = cv::imread("cards.jpg"); if (!src.data) return -1;
// // Dilate a bit the dist image // Mat kernel1 = Mat::ones(7, 7, CV_8UC1); // dilate(dist, dist, kernel1); // erode(dist, dist, kernel1); // imshow("Peaks", dist);