diff --git a/TIASshot/ColorCorrection/ColorCorrector.cs b/TIASshot/ColorCorrection/ColorCorrector.cs index 74bd7e8..4c37829 100644 --- a/TIASshot/ColorCorrection/ColorCorrector.cs +++ b/TIASshot/ColorCorrection/ColorCorrector.cs @@ -162,10 +162,15 @@ /// 画像 /// 変換目標の24x3行列 internal Mat CalcConvertMatrix(Mat src, Mat target, int channels) { + // ExtendMat は非対応入力で src をそのまま返すため,新規確保時のみ解放する var extended = ExtendMat(src, channels); - Mat convMat = new Mat(channels, 3, MatType.CV_64FC1); - Cv2.Solve(extended, target, convMat, DecompTypes.SVD); - return convMat; + try { + Mat convMat = new Mat(channels, 3, MatType.CV_64FC1); + Cv2.Solve(extended, target, convMat, DecompTypes.SVD); + return convMat; + } finally { + if (!ReferenceEquals(extended, src)) extended.Dispose(); + } } /// @@ -175,9 +180,15 @@ /// /// internal Mat ConvertColor(Mat src, Mat conv) { + // ExtendMat は非対応入力で src をそのまま返すため,新規確保時のみ解放する var extended = ExtendMat(src, conv.Rows); - var converted = (extended * conv); - return converted.ToMat(); + try { + using (var converted = extended * conv) { + return converted.ToMat(); + } + } finally { + if (!ReferenceEquals(extended, src)) extended.Dispose(); + } } ///