本文整理汇总了C#中OpenCvSharp.Mat.Dispose方法的典型用法代码示例。如果您正苦于以下问题:C# Mat.Dispose方法的具体用法?C# Mat.Dispose怎么用?C# Mat.Dispose使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OpenCvSharp.Mat
的用法示例。
在下文中一共展示了Mat.Dispose方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CvDct
public void CvDct(ref Mat DST, Mat SRC, int N)
{
Mat dct, idct;
Mat dct2, dct3;
int width = SRC.Width;//N;
int height = SRC.Height;//N;
DST = SRC.Clone();
//DCT,IDCT用の行列作成(double)
dct = new Mat(height, width, MatType.CV_64FC1);
idct = new Mat(height, width, MatType.CV_64FC1);
dct2 = new Mat(height, width, MatType.CV_64FC1);
dct3 = new Mat(height, width, MatType.CV_64FC1);
var indexer_DST = new MatOfByte3(DST).GetIndexer();
var indexer_dct = new MatOfDouble3(dct).GetIndexer();
//行列dctに画像データをコピー
//double fcos;
for (int x = 0; x < width; x++)
for (int y = 0; y < height; y++)
{
Vec3d color = indexer_dct[y, x];
color.Item0= indexer_DST[y, x].Item0 / 256.0;
indexer_dct[y,x] = color;
}
//DCT…dctをコサイン変換してdct2を作成します
Cv2.Dct(dct, dct2, DctFlags.None);
//dct2をDenomで割りdct3を作成します
PerformDenom(ref dct3, dct2);
//IDCT…dct3を逆コサイン変換します
Cv2.Dct(dct3, idct, DctFlags.Inverse);
var indexer_idct = new MatOfDouble3(idct).GetIndexer();
//逆変換用画像にデータをコピー
for (int x = 0; x < width; x++)
for (int y = 0; y < height; y++)
{
Vec3b color = indexer_DST[y, x];
color.Item0= (byte)(indexer_idct[y,x].Item0 * 256.0);
indexer_DST[y,x]=color;
}
////正規化
//double min, max;
//min = 4000000000000;
//max = -4000000000000;
//double offset = 0.0;
////輝度値の最大と最小を取得
//DST.MinMaxIdx(out min, out max);
////for (int x = 0; x < width; x++)
//// for (int y = 0; y < height; y++)
//// {
//// double data = indexer_DST[y,x].Item0;
//// if (data < min) min = data;
//// if (data > max) max = data;
//// }
//for (int x = 0; x < width; x++)
// for (int y = 0; y < height; y++)
// {
// Vec3b color = indexer_DST[y, x];
// double data = indexer_DST[y, x].Item0;
// if (data < min + offset) data = min + offset;
// color.Item0 = (byte)( (((data / (max - min + offset))) * 255.0) - (((min + offset) / (max - min + offset)) * 255.0) );
// indexer_DST[y,x] = color;
// }
////DST = idct.Clone();
//行列メモリを開放します
dct.Dispose();
dct2.Dispose();
dct3.Dispose();
idct.Dispose();
indexer_dct = null;
indexer_DST = null;
indexer_idct = null;
}
示例2: ReadMat
/// <summary>
///
/// </summary>
/// <param name="defaultMat"></param>
/// <returns></returns>
public Mat ReadMat(Mat defaultMat = null)
{
var value = new Mat();
try
{
NativeMethods.core_FileNode_read_Mat(ptr, value.CvPtr, Cv2.ToPtr(defaultMat));
}
catch
{
value.Dispose();
throw;
}
return value;
}
示例3: OpenFileDialog
void 画像取得(ref Mat src)
{
if (src != null) src.Dispose();
OpenFileDialog dialog = new OpenFileDialog()
{
Multiselect = false, // 複数選択の可否
Filter = // フィルタ
"画像ファイル|*.bmp;*.gif;*.jpg;*.png|全てのファイル|*.*",
};
//ダイアログを表示
//ダイアログを表示
DialogResult result = dialog.ShowDialog();
if (result == DialogResult.OK)
{
// ファイル名をタイトルバーに設定
this.Text = dialog.SafeFileName;
//OpenCV処理
src = new Mat(dialog.FileName, ImreadModes.GrayScale);
pictureBoxIpl1.ImageIpl = src;
}
}