//void CAlgorithmFluorescence::imageSegementation(const cv::Mat &srcImage) //{ // Mat mask; // //Mat sobelImg = srcImage.clone(); // //genSobelImage(sobelImg); // //sobelImg.convertTo(sobelImg, CV_8UC1); // // // Mat sobelX, sobelY; // Sobel(srcImage, sobelX, CV_32FC1, 1, 0, 3, BORDER_REPLICATE); // Sobel(srcImage, sobelY, CV_32FC1, 0, 1, 3, BORDER_REPLICATE); // Mat img = sobelX.mul(sobelX) + sobelY.mul(sobelY); // Mat tempImg; // img.convertTo(tempImg, CV_32FC1); // Mat tempImg0; // sqrt(tempImg, tempImg0); // img = tempImg0; // img.convertTo(img, CV_8UC1); // Mat blurImg; // cv::medianBlur(img, blurImg, 11); // bgSubtractor(img, mask, 0.001); // // /*cv::Mat element5(5, 5, CV_8U, cv::Scalar(1)); // cv::Mat closedMat; // cv::morphologyEx(mask, closedMat, cv::MORPH_CLOSE, element5);*/ // // //cv::floodFill(); // luffy_base::luffyCircle pCircle; // // vector mats= ImageProcess::findCircleObject(mask, srcImage, 15, &pCircle); // if (mats.size() == 0) // { // return; // } // if (mats[0].size() != mats[1].size()) // { // return; // } // Mat dilatedImgBin; // Mat imgBinary = mats[0] > 0; // dilate(imgBinary, dilatedImgBin, Mat::ones(5, 5, CV_32FC1)); // erode(dilatedImgBin, imgBinary, Mat::ones(5, 5, CV_32FC1)); // imgBinary = ~imgBinary; // //Mat canvas(imgBinary.size(), imgBinary.type(), Scalar::all(0)); // vector> cons; // cv::findContours(imgBinary, cons, RETR_EXTERNAL, CHAIN_APPROX_NONE); // for (const vector & pContour : cons) // { // const int& size = pContour.size(); // if (size < 200) // { // Mat(pContour).setTo(255); // //continue; // } // //cv::fillPoly(canvas, vector>(1, pContour), Scalar(255)); // } // //Mat tarMat = (~canvas).mul(mats[1]) / 255; // //openOper(imgBinary, Mat::ones(1, 13, CV_32FC1)); // // // // // return; // //}