• 大小: 3.33MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-08
  • 语言: C/C++
  • 标签: 孔洞填充  OpenCV  C++  

资源简介

一个VS2010 C++ 利用OpenCV2.4.9 编写基础的孔洞填充 包含改善算法后的程序(解决周围伪孔洞填充)

资源截图

代码片段和文件信息

#include
#include

using namespace std;
using namespace cv;

void FillHole();
void FillHoleBetter();


void main()
{
FillHoleBetter();
}


void FillHoleBetter()
{
Mat src = imread(“FillHole.jpg“ 0);
cv::imshow(“src“ src);
Mat dst = src.clone();
cv::threshold(src dst 220 255 THRESH_BINARY_INV);
Mat FloodFillLeft = dst.clone();
Mat FloodFillTop = dst.clone();
Mat FloodFillBottom = dst.clone();
Mat FloodFillRight = dst.clone();
Mat FloodFill = dst.clone();

for (int i = 0; i < FloodFillLeft.rows - 1; i++)//下方
if (FloodFillLeft.at(i 0) == 0)
cv::floodFill(FloodFillLeft Point(0 i) Scalar(255));

for (int j = 0; j < FloodFillTop.cols - 1; j++)//左侧
if (FloodFillTop.at(0 j) == 0)
cv::floodFill(FloodFillTop Point(j 0) Scalar(255));

for (int i = 0; i < FloodFillBottom.rows - 1; i++)//上方
if (FloodFillBottom.at(i FloodFillBottom.cols - 1) == 0)
cv::floodFill(FloodFillBottom Point(FloodFillBottom.cols - 1 i) Scalar(255));

for (int j = 0; j < FloodFillRight.cols - 1; j = j++)//右侧
if (FloodFillRight.at(FloodFillRight.rows - 1 j) == 0)
cv::floodFill(FloodFillRight Point(j FloodFillRight.rows - 1) Scalar(255));


Mat temp1 temp2;
cv::bitwise_and(FloodFillLeft FloodFillRight temp1);
cv::bitwise_and(FloodFillBottom FloodFillTop temp2);
cv::bitwise_and(temp1 temp2 FloodFill);



Mat FloodFillInv = Scalar(255) - FloodFill;
Mat FillHoleResult;
cv::bitwise_or(FloodFillInv dst FillHoleResult);
FillHoleResult = 255 - FillHoleResult;
imshow(“FloodFillResult“ FillHoleResult);
imshow(“FloodFill“ FloodFill);
imshow(“FloodFillInv“ FloodFillInv);
imshow(“dst“ dst);
cv::waitKey(0);
}


void FillHole()
{
Mat src = imread(“FillHole.jpg“ 0);
cv::imshow(“src“ src);
Mat dst = src.clone();
cv::threshold(src dst 220 255 THRESH_BINARY_INV);
Mat FloodFill = dst.clone();

for (int i = 0; i < FloodFill.rows - 1; i++)//下方
if (FloodFill.at(i 0) == 0)
cv::floodFill(FloodFill Point(0 i) Scalar(255));

for (int j = 0; j < FloodFill.cols - 1; j++)//左侧
if (FloodFill.at(0 j) == 0)
cv::floodFill(FloodFill Point(j 0) Scalar(255));

for (int i = 0; i < FloodFill.rows - 1; i++)//上方
if (FloodFill.at(i FloodFill.cols - 1) == 0)
cv::floodFill(FloodFill Point(FloodFill.cols - 1 i) Scalar(255));

for (int j = 0; j < FloodFill.cols - 1; j = j++)//右侧
if (FloodFill.at(FloodFill.rows - 1 j) == 0)
cv::floodFill(FloodFill Point(j FloodFill.rows - 1) Scalar(255));

Mat FloodFillInv = Scalar(255) - FloodFill;
Mat FillHoleResult;
cv::bitwise_or(FloodFillInv dst FillHoleResult);
FillHoleResult = 255 - FillHoleResult;
imshow(“FloodFillResult“ FillHoleResult);
imshow(“FloodFill“ FloodFill);
imshow(“FloodFillInv“ FloodFillInv);
imshow(“dst“ dst);
cv::waitKey(0);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      76800  2019-09-28 09:49  FillHole\Debug\FillHole.exe

     文件     457832  2019-09-28 09:49  FillHole\Debug\FillHole.ilk

     文件    2214912  2019-09-28 09:49  FillHole\Debug\FillHole.pdb

     文件       2268  2019-09-28 09:49  FillHole\FillHole\Debug\FillHole.log

     文件       1234  2019-09-28 09:49  FillHole\FillHole\Debug\FillHole.tlog\cl.command.1.tlog

     文件      34312  2019-09-28 09:49  FillHole\FillHole\Debug\FillHole.tlog\CL.read.1.tlog

     文件        504  2019-09-28 09:49  FillHole\FillHole\Debug\FillHole.tlog\CL.write.1.tlog

     文件        173  2019-09-28 09:49  FillHole\FillHole\Debug\FillHole.tlog\FillHole.lastbuildstate

     文件       5518  2019-09-28 09:49  FillHole\FillHole\Debug\FillHole.tlog\link.command.1.tlog

     文件       6490  2019-09-28 09:49  FillHole\FillHole\Debug\FillHole.tlog\link.read.1.tlog

     文件        488  2019-09-28 09:49  FillHole\FillHole\Debug\FillHole.tlog\link.write.1.tlog

     文件     846848  2019-09-28 09:49  FillHole\FillHole\Debug\vc120.idb

     文件    1347584  2019-09-28 09:49  FillHole\FillHole\Debug\vc120.pdb

     文件     240569  2019-09-28 09:49  FillHole\FillHole\Debug\源.obj

     文件      11166  2019-09-28 07:04  FillHole\FillHole\FillHole.jpg

     文件       4084  2019-09-28 06:43  FillHole\FillHole\FillHole.vcxproj

     文件        944  2019-09-28 06:43  FillHole\FillHole\FillHole.vcxproj.filters

     文件       2972  2019-09-28 09:49  FillHole\FillHole\源.cpp

     文件   13369344  2019-09-28 09:50  FillHole\FillHole.sdf

     文件        970  2019-09-28 06:38  FillHole\FillHole.sln

    ..A..H.     21504  2019-09-28 09:50  FillHole\FillHole.v12.suo

     目录          0  2019-09-28 09:49  FillHole\FillHole\Debug\FillHole.tlog

     目录          0  2019-09-28 09:49  FillHole\FillHole\Debug

     目录          0  2019-09-28 09:48  FillHole\Debug

     目录          0  2019-09-28 09:49  FillHole\FillHole

     目录          0  2019-09-28 09:50  FillHole

----------- ---------  ---------- -----  ----

             18646516                    26


评论

共有 条评论