资源简介
说明:
http://blog.csdn.net/wangyaninglm/article/details/47701047
在Matlab下,使用imfill可以很容易的完成孔洞填充操作,感觉这是一个极为常用的方法,然而不知道为什么Opencv里面却没有集成这个函数。在网上查了好多关于Opencv下的孔洞填充方法,大部分使用轮廓查找方法去做的,但对于这种方法,总感觉不是特别好。之前了解过冈萨雷斯那本书上的孔洞填充算法,所以想着手重新写一个。这里借鉴了冈萨雷斯书上的集合运算方法(并不完全一样)
代码片段和文件信息
// fillhole.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include
#include “opencv2/imgproc/imgproc.hpp“
#pragma comment(lib“opencv_core2410d.lib“)
#pragma comment(lib“opencv_highgui2410d.lib“)
#pragma comment(lib“opencv_imgproc2410d.lib“)
using namespace std;
using namespace cv;
void fillHole(const Mat srcBw Mat &dstBw)
{
Size m_Size = srcBw.size();
Mat Temp=Mat::zeros(m_Size.height+2m_Size.width+2srcBw.type());//延展图像
srcBw.copyTo(Temp(Range(1 m_Size.height + 1) Range(1 m_Size.width + 1)));
cv::floodFill(Temp Point(0 0) Scalar(255));
Mat cutImg;//裁剪延展的图像
Temp(Range(1 m_Size.height + 1) Range(1 m_Size.width + 1)).copyTo(cutImg);
dstBw = srcBw | (~cutImg);
}
//int _tmain(int argc _TCHAR* argv[])
//{
// Mat image = imread(“8.jpg“0);
// imshow(“src“image);
//
// Mat dst = image.clone();
//
// threshold( image dst 255 200 CV_THRESH_BINARY);
// fillHole(imagedst);
//
// imshow(“ss“dst);
//
// waitKey(0);
//
// return 0;
//}
int main()
{
Mat img=cv::imread(“3.jpg“1);
Mat gray;
cv::cvtColor(img gray CV_RGB2GRAY);
Mat bw;
cv::threshold(gray bw 0 255 CV_THRESH_BINARY | CV_THRESH_OTSU);
Mat bwFill;
fillHole(bw bwFill);
imshow(“填充前“ gray);
imshow(“填充后“ bwFill);
waitKey();
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 53248 2015-08-11 21:50 fillhole\Debug\fillhole.exe
文件 661012 2015-08-11 21:50 fillhole\Debug\fillhole.ilk
文件 1100800 2015-08-11 21:50 fillhole\Debug\fillhole.pdb
文件 921654 2015-08-09 18:31 fillhole\fillhole\1.bmp
文件 20422 2015-08-09 18:27 fillhole\fillhole\1.jpg
文件 29391 2015-08-10 20:21 fillhole\fillhole\2.jpg
文件 13375 2015-08-11 21:40 fillhole\fillhole\3.jpg
文件 29895 2015-08-10 21:34 fillhole\fillhole\8.jpg
文件 1410 2015-08-11 21:50 fillhole\fillhole\Debug\cl.command.1.tlog
文件 15824 2015-08-11 21:50 fillhole\fillhole\Debug\CL.read.1.tlog
文件 704 2015-08-11 21:50 fillhole\fillhole\Debug\CL.write.1.tlog
文件 406 2015-08-09 18:25 fillhole\fillhole\Debug\fillhole.exe.em
文件 472 2015-08-09 18:25 fillhole\fillhole\Debug\fillhole.exe.em
文件 381 2015-08-11 21:50 fillhole\fillhole\Debug\fillhole.exe.intermediate.manifest
文件 51 2015-08-11 21:50 fillhole\fillhole\Debug\fillhole.lastbuildstate
文件 895 2015-08-11 21:50 fillhole\fillhole\Debug\fillhole.log
文件 138295 2015-08-11 21:50 fillhole\fillhole\Debug\fillhole.obj
文件 1179648 2015-08-09 18:25 fillhole\fillhole\Debug\fillhole.pch
文件 713 2015-08-09 18:25 fillhole\fillhole\Debug\fillhole.vcxprojResolveAssemblyReference.cache
文件 0 2015-08-09 18:25 fillhole\fillhole\Debug\fillhole.write.1.tlog
文件 206 2015-08-09 18:25 fillhole\fillhole\Debug\fillhole_manifest.rc
文件 2 2015-08-11 21:50 fillhole\fillhole\Debug\li
文件 2 2015-08-11 21:50 fillhole\fillhole\Debug\li
文件 2 2015-08-11 21:50 fillhole\fillhole\Debug\li
文件 2 2015-08-11 21:50 fillhole\fillhole\Debug\li
文件 2 2015-08-11 21:50 fillhole\fillhole\Debug\li
文件 2 2015-08-11 21:50 fillhole\fillhole\Debug\li
文件 2 2015-08-11 21:50 fillhole\fillhole\Debug\li
文件 2 2015-08-11 21:50 fillhole\fillhole\Debug\li
文件 2 2015-08-11 21:50 fillhole\fillhole\Debug\li
............此处省略35个文件信息
- 上一篇:麦克风阵列仿真的源代码
- 下一篇:基于matlab的模板匹配与车牌识别
相关资源
- LSD直线检测算法代码OpenCV+Matlab
- LSD直线检测opencv+matlab
- 基于MATLAB与OpenCV相结合的双目立体视
- 基于HOG+SVM的行人检测系统183534
- Matlab+OpenCV相机标定详细步骤
- hogcascade训练,内有人头训练样本和使
- 图片素材.zip,适用于常见的数字图像
- KCF跟踪demo1
- 光流法包括LK光流,HS光流,论文,
- 张正友相机标定Opencv实现带棋盘格打
- MATLAB实现小于指定空洞面积的空洞进
- opencv 类似matlab 绘图
- Gabor变换实现(CmatlabOpenCV)
- 最小二乘法的平面拟合去除图像背景
- 基于HOG+SVM的行人检测系统
-
msvc2017.xm
l和msvcpp2017 - VideoFaceDetect 使用matlab调用opencv做成的
- opencv-3
- Smoke-Detection 视频烟雾检测
- 基于HoG特征和粒子滤波的跟踪:C、
- 相位一致性代码
评论
共有 条评论