本文整理汇总了C#中OpenCvSharp.IplImage.Resize方法的典型用法代码示例。如果您正苦于以下问题:C# IplImage.Resize方法的具体用法?C# IplImage.Resize怎么用?C# IplImage.Resize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OpenCvSharp.IplImage
的用法示例。
在下文中一共展示了IplImage.Resize方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ResizeIplTo
public static float[] ResizeIplTo(IplImage Face, int width, int height)
{
IplImage smallerFace =
new IplImage(new OpenCvSharp.CvSize(width, height),
Face.Depth, Face.NChannels);
Face.Resize(smallerFace, Interpolation.Linear);
unsafe
{
byte* smallFaceData = smallerFace.ImageDataPtr;
float[] currentFace = new float[width * height * smallerFace.NChannels * BytesPerPixel(Face.Depth)];
for (int i = 0; i < smallerFace.Height; i++)
{
for (int j = 0; j < smallerFace.Width; j++)
{
currentFace[i * smallerFace.WidthStep + j] =
(float)smallFaceData[i * smallerFace.WidthStep + j];
}
}
smallerFace.Dispose();
return currentFace;
}
}
示例2: AllMatching
/// <summary>
/// 指定した分割数でそろばんを全て読み取る
/// </summary>
/// <param name="source">そろばんの画像</param>
/// <param name="threshold">しきい値</param>
/// <param name="process_img">処理画像</param>
/// <returns>読み取った数値(-1はエラー)</returns>
public int[] AllMatching(IplImage source, double threshold, out IplImage process_img)
{
// グレースケール画像
IplImage cap_gray = new IplImage(PROCESS_SIZE, BitDepth.U8, 1);
// キャプチャとリサイズ,グレースケール変換
using (IplImage tmp = new IplImage(
PROCESS_SIZE, source.Depth, source.NChannels))
{
source.Resize(tmp);
tmp.CvtColor(cap_gray, ColorConversion.BgrToGray);
}
int[] results = new int[DIVIDE_NUM];
int width = cap_gray.Width / (DIVIDE_NUM + 1);
int margin = (int)(width * DIVIDE_MARGIN);
// 領域ごとに処理
Parallel.For(0, DIVIDE_NUM, i =>
{
IplImage tmp = new IplImage(PROCESS_SIZE, BitDepth.U8, 1);
cap_gray.Copy(tmp);
int x = (i + 1) * width - width / 2;
// 領域を指定
CvRect rect = new CvRect(x - margin, 0, width + margin * 2, PROCESS_SIZE.Height);
tmp.SetROI(rect);
// 0-9の画像とMatchTemplateし一番高い値を得る
results[i] = bestMatchNum(tmp, this.templates[i], threshold);
// 領域の指定を解除
tmp.ResetROI();
});
// 分割線の描画
for (int i = 1; i < DIVIDE_NUM + 2; i++)
{
int x = i * width - width / 2;
cap_gray.Line(x, 0, x, PROCESS_SIZE.Height, CvColor.White);
}
// 読み取り数値を表示
CvFont font = new CvFont(FontFace.HersheyDuplex, 1.0, 1.0);
for (int i = 0; i < DIVIDE_NUM; i++)
{
if (results[i] != -1)
{
int x = i * width + width / 2;
cap_gray.PutText(results[i].ToString(), new CvPoint(x, 30),
font, CvColor.White);
}
}
// 分割線, 読み取り数値画像を返す
process_img = cap_gray;
return results;
}