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();
+ }
}
///