diff --git a/TIASshot/ChartDetection/ChartDetector.cs b/TIASshot/ChartDetection/ChartDetector.cs index 1b9fafd..eb4f2c1 100644 --- a/TIASshot/ChartDetection/ChartDetector.cs +++ b/TIASshot/ChartDetection/ChartDetector.cs @@ -81,31 +81,32 @@ if (_detectionCount < Config.GetInt("Calib/ChartSetCount")) return null; // ホモグラフィの計算 - var matPtsPict = Mat.FromArray(ptsPict); - var matPtsModel = Mat.FromArray(ptsModel); - var matH = Cv2.FindHomography(matPtsModel, matPtsPict); - var imgF = new Mat(1545, 810, MatType.CV_8UC3); - Cv2.WarpPerspective(img, imgF, matH, imgF.Size()); + using (var matPtsPict = Mat.FromArray(ptsPict)) + using (var matPtsModel = Mat.FromArray(ptsModel)) + using (var matH = Cv2.FindHomography(matPtsModel, matPtsPict)) + using (var imgF = new Mat(1545, 810, MatType.CV_8UC3)) { + Cv2.WarpPerspective(img, imgF, matH, imgF.Size()); - // チャートマスク作成 - var chartMasks = new List(); - var roiSize = ptsPict.Count < 8 ? 60 : 80; - for (int i = 0; i < 24; i++) { - var row = i % 6; - var col = i / 6; - var x = 581 - col * 144 + (ptsPict.Count < 8 ? 10 : 0); - var y = 318 + row * 144 + (ptsPict.Count < 8 ? 10 : 0); - var roi = new Rect(x, y, roiSize, roiSize); - using (var mask = new Mat(1545, 810, MatType.CV_8U)) { - Cv2.Rectangle(mask, roi, new Scalar(255), Cv2.FILLED); - var maskF = new Mat(img.Size(), MatType.CV_8U); - Cv2.WarpPerspective(mask, maskF, matH, maskF.Size()); - chartMasks.Add(maskF); + // チャートマスク作成 + var chartMasks = new List(); + var roiSize = ptsPict.Count < 8 ? 60 : 80; + for (int i = 0; i < 24; i++) { + var row = i % 6; + var col = i / 6; + var x = 581 - col * 144 + (ptsPict.Count < 8 ? 10 : 0); + var y = 318 + row * 144 + (ptsPict.Count < 8 ? 10 : 0); + var roi = new Rect(x, y, roiSize, roiSize); + using (var mask = new Mat(1545, 810, MatType.CV_8U)) { + Cv2.Rectangle(mask, roi, new Scalar(255), Cv2.FILLED); + var maskF = new Mat(img.Size(), MatType.CV_8U); + Cv2.WarpPerspective(mask, maskF, matH, maskF.Size()); + chartMasks.Add(maskF); + } } - } - _showMessage("舌診チャート検出 校正中"); - return chartMasks; + _showMessage("舌診チャート検出 校正中"); + return chartMasks; + } } } }