资源简介
连通域分割代码,当初是用来分割染色体的,可多张处理。比较常规的方法,界限分明的图像处理效果都还可以,为啥非要五十个字,写的人头大。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
string WChar2Ansi(LPCWSTR pwszSrc)
{
int nLen = WideCharToMultiByte(CP_ACP 0 pwszSrc -1 NULL 0 NULL NULL);
if (nLen <= 0) return string(““);
char* pszDst = new char[nLen];
if (NULL == pszDst) return string(““);
WideCharToMultiByte(CP_ACP 0 pwszSrc -1 pszDst nLen NULL NULL);
pszDst[nLen - 1] = 0;
string strTemp(pszDst);
delete[] pszDst;
return strTemp;
}
// 利用winWIN32_FIND_DATA读取文件下的文件名
void readImgNamefromFile(char* fileName vector &imgNames)
{
// vector清零 参数设置
imgNames.clear();
WIN32_FIND_DATA file;
int i = 0;
char tempFilePath[MAX_PATH + 1];
char tempFileName[50];
// 转换输入文件名
sprintf_s(tempFilePath “%s/*“ fileName);
// 多字节转换
WCHAR wstr[MAX_PATH] = { 0 };
MultiByteToWideChar(CP_ACP 0 tempFilePath -1 wstr sizeof(wstr));
// 查找该文件待操作文件的相关属性读取到WIN32_FIND_DATA
HANDLE handle = FindFirstFile(wstr &file);
if (handle != INVALID_HANDLE_VALUE)
{
FindNextFile(handle &file);
FindNextFile(handle &file);
// 循环遍历得到文件夹的所有文件名
do
{
sprintf_s(tempFileName “%s“ fileName);
imgNames.push_back(WChar2Ansi(file.cFileName));
imgNames[i].insert(0 tempFileName);
i++;
} while (FindNextFile(handle &file));
}
FindClose(handle);
}
int main()
{
//图片文件位置
char* fileName = “D:\\image\\Y\\“;
vector imgNames;
// 获取对应文件夹下所有文件名
readImgNamefromFile(fileName imgNames);
// 遍历对应文件夹下所有文件名
Mat in out;
int a = 1;
for (int i = 0; i < imgNames.size(); i++)
{
Mat srcImage = imread(imgNames[i]0);
if (!srcImage.data)
return -1;
/* 可添加图像处理算法code*/
Mat dstImage;
// threshold只针对二值化图像
threshold(srcImage dstImage 0.0 255.0 CV_THRESH_BINARY | CV_THRESH_OTSU);
Mat element = getStructuringElement(0 Size(8 8));
erode(dstImage dstImage element);
vector> contours;
vector hierarchy;
findContours(dstImage contours hierarchy CV_RETR_LIST CV_CHAIN_APPROX_SIMPLE Point(00));
vector maxcontours; //最大轮廓
double maxArea = 0;
for (size_t j = 0; j < contours.size(); j++)
{
string name = to_string(a) + “.jpg“;
Rect r = boundingRect(contours[j]);
rectangle(srcImage r Scalar(255));
in = srcImage(r);
//resize(in out Size(240 240) 0 0 INTER_NEAREST);
imwrite(name in);
a++;
}
waitKey(0);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-03-08 15:09 连通域\
目录 0 2017-12-08 16:17 连通域\.vs\
目录 0 2017-12-08 16:17 连通域\.vs\测试\
目录 0 2017-12-08 16:17 连通域\.vs\测试\v14\
文件 33280 2018-03-08 15:09 连通域\.vs\测试\v14\.suo
目录 0 2017-12-22 11:48 连通域\Debug\
目录 0 2017-12-22 13:11 连通域\text\
文件 15116598 2017-11-08 17:28 连通域\text\1.BMP
文件 15116598 2017-11-08 17:39 连通域\text\10.BMP
文件 15116598 2017-11-08 17:30 连通域\text\2.BMP
文件 15116598 2017-11-08 17:31 连通域\text\3.BMP
文件 15116598 2017-11-08 17:32 连通域\text\4.BMP
文件 15116598 2017-11-08 17:33 连通域\text\5.BMP
文件 15116598 2017-11-08 17:34 连通域\text\6.BMP
文件 15116598 2017-11-08 17:35 连通域\text\7.BMP
文件 15116598 2017-11-08 17:37 连通域\text\8.BMP
文件 15116598 2017-11-08 17:38 连通域\text\9.BMP
目录 0 2017-12-28 09:17 连通域\x64\
目录 0 2017-12-28 09:14 连通域\x64\Debug\
文件 187392 2017-12-28 09:14 连通域\x64\Debug\测试.exe
文件 776320 2017-12-28 09:14 连通域\x64\Debug\测试.ilk
文件 3682304 2017-12-28 09:14 连通域\x64\Debug\测试.pdb
目录 0 2017-12-28 09:17 连通域\x64\Release\
文件 37376 2018-01-20 09:45 连通域\x64\Release\测试.exe
文件 729307 2018-01-20 09:45 连通域\x64\Release\测试.iobj
文件 272480 2018-01-20 09:45 连通域\x64\Release\测试.ipdb
文件 2224128 2018-01-20 09:45 连通域\x64\Release\测试.pdb
目录 0 2018-03-21 10:26 连通域\测试\
文件 1300 2017-12-08 16:17 连通域\测试.sln
文件 40271872 2018-03-08 15:09 连通域\测试.VC.db
文件 2744 2018-03-21 10:27 连通域\测试\测试.cpp
............此处省略2个文件信息
- 上一篇:JetPack刷机包
- 下一篇:WindowsAPI函数参考手册
评论
共有 条评论