原文:
emgu-wpf學習使用-rectangle識別
環境:win8 64位 vs2015
emgu 版本:emgucv-windesktop 3.2.0.2682
示例圖上部流程:原圖->灰度化->截斷閾值化->中值模糊->高斯模糊->膨脹->腐蝕->ostu二值化。
// 灰度化
imageimggray = new image(imgsrc.size);
cvinvoke.cvtcolor(imgsrc, imggray, colorconversion.bgr2gray);
//截斷閾值化
imageimgthresholdtrunc = new image(imggray.size);
cvinvoke.threshold(imggray, imgthresholdtrunc, 60, 255, thresholdtype.trunc);
// 中值模糊
imageimgmedian = imgthresholdtrunc.smoothmedian(7); //使用5*5的卷積核
// 高斯模糊
imageimggaussian = imgmedian.smoothgaussian(5);
// 膨脹,消除雜點
mat omat2 = cvinvoke.getstructuringelement(emgu.cv.cvenum.elementshape.rectangle,
new system.drawing.size(5, 5), new system.drawing.point(0, 0));
imageimgerode = new image(imggray.size);
cvinvoke.erode(imggaussian, imgerode, omat2, new system.drawing.point(0, 0), 4,
bordertype.default, new mcvscalar(255, 0, 0, 255));
// 腐蝕,消除雜點
imageimgdilate = new image(imggray.size);
cvinvoke.dilate(imgerode, imgdilate, omat2, new system.drawing.point(0, 0), 4,
bordertype.default, new mcvscalar(255, 0, 0, 255));
// otsu二值化
imageimgthresholdotsu = new image(imggray.size);
cvinvoke.threshold(imgdilate, imgthresholdotsu, 0, 255, thresholdtype.otsu);
示例圖下部流程:原圖->灰度化->截斷閾值化->消除裂縫->ostu二值化->識別contours->繪製contours.
// 灰度化
imageimggray = new image(imgsrc.size);
cvinvoke.cvtcolor(imgsrc, imggray, colorconversion.bgr2gray);
//截斷閾值化
imageimgthresholdtrunc = new image(imggray.size);
cvinvoke.threshold(imggray, imgthresholdtrunc, 60, 255, thresholdtype.trunc);
// 消除裂縫
mat omat1 = cvinvoke.getstructuringelement(emgu.cv.cvenum.elementshape.rectangle,
new system.drawing.size(6, 6), new system.drawing.point(0, 0));
imageimgmorphologyex = new image(imggray.size);
cvinvoke.morphologyex(imgthresholdtrunc, imgmorphologyex, emgu.cv.cvenum.morphop.close, omat1,
new system.drawing.point(0, 0), 1, bordertype.default,
new mcvscalar(255, 0, 0, 255));
// otsu二值化
imageimgthresholdotsu = new image(imggray.size);
cvinvoke.threshold(imgmorphologyex, imgthresholdotsu, 0, 255, thresholdtype.otsu);
listboxlist = new list(); //a box is a rotated rectangle
vectorofvectorofpoint contours = new vectorofvectorofpoint();
cvinvoke.findcontours(imgthresholdotsu, contours, null, retrtype.list,
imageimgresult = new image(imggray.size);
cvinvoke.cvtcolor(imgthresholdotsu, imgresult, colorconversion.gray2bgr);
mcvscalar oscaler = new mcvscalar(40, 255, 255, 255);
int count = contours.size;
for (int i = 0; i < count; i++)
}#endregion
if (isrectangle)
cvinvoke.drawcontours(imgresult, contours, i, oscaler, 3);}}
}}
MySQL使用學習使用 mysql學習使用
1 mysql學習 1 安裝 ubuntu下直接安裝 apt get install mysql server 2 檢查伺服器是否啟動 sudo netstat tap grep mysql,如果啟動成功,出現以下資訊 tcp00localhost.localdomain mysql listen ...
學習使用CSDN markdown使用
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...
學習使用PIVOT
假設有這樣的乙個需求 有乙個表中儲存了某個部門的各個員工的每一年的各類薪金,記錄儲存格式如 員工姓名 薪金數目 薪金種類 年份 現在要求根據員工的姓名進行查詢,查詢出某些員工各個年份的薪金總數,出來的結果要求 columnname 年份 員工1姓名 員工2姓名 columnvalue 年份 薪金總數...