2016-05-23 13 views
0

カメラからテキストを検索するためのコードを書きました。実際には、最初に画像内にテキストを見つけるためのコードを書いて、成功しましたが、カメラからテキストを見つけることはできません。 ありがとうございます。 さらに、私はclasslibraryにこのコードを書いていますので、うまくテストできません。opencvでカメラからテキストを抽出する(C#)

public string GetImageText(string imgPath) 
    { 


     pathImage = imgPath; 

     //CvCapture cap = new CvCapture(0); 
     CvCapture cap; 
     //CvCapture cap = new CvCapture(imgPath); 
     cap = CvCapture.FromFile(imgPath); 

     cap= CvCapture.FromCamera(CaptureDevice.Any); 

     // img = new IplImage(imgPath, LoadMode.Color); 
     // cap =CvCapture.FromFile(imgPath); 

     // IplImage frame = new IplImage(); 
     // imgPath=cap.QueryFrame(frame); 
     frame = cap.QueryFrame(); 
     // IplImage frame = new IplImage(); 
     // BitmapConverter.ToBitmap(frame); 
     //frame = new IplImage(imgPath, LoadMode.Color); 


     if (frame != null) 
     { 
      IplImage img1 = new IplImage(frame.Size, BitDepth.U8, 1); 
      IplConvKernel element = Cv.CreateStructuringElementEx(21, 3, 10, 2, ElementShape.Rect, null); 
      aimg = new IplImage(frame.Size, BitDepth.U8, 1); 
      IplImage temp = aimg.Clone(); 
      IplImage dest = aimg.Clone(); 
      frame.CvtColor(aimg, ColorConversion.RgbaToGray); 
      bimg = aimg.Clone(); 
      Cv.Smooth(aimg, aimg, SmoothType.Gaussian); 
      Cv.MorphologyEx(aimg, temp, dest, element, MorphologyOperation.TopHat, 1); 

      Cv.Threshold(dest, aimg, 128, 255, ThresholdType.Binary | ThresholdType.Otsu); 
      Cv.Smooth(aimg, dest, SmoothType.Median); 
      Cv.Dilate(dest, dest, element, 2); 

      Cv.ReleaseImage(temp); 
      Cv.ReleaseImage(dest); 
      IplImage labelImage = new IplImage(frame.Size, CvBlobLib.DepthLabel, 1); 
      labelImage = new IplImage(frame.Size, BitDepth.U8, 1); 
      frame = new IplImage(frame.Size, BitDepth.U8, 1); 

      blob = new CvBlobs(); 
      text.Clear(); 
      CvBlobLib.Label(labelImage, blob); 

      CvBlobLib.FilterByArea(blob, 6, 10); 
      IplImage imgtemp = frame.Clone(); 
      foreach (var item in blob) 
      { 

       item.Value.SetImageRoiToBlob(bimg); 

       double ratio = (double)item.Value.Rect.Width/item.Value.Rect.Height; 
       double angle = (double)item.Value.Angle(); 
       if (ratio > 3.5 && ratio < 5.4 && angle > -15 && angle < 15) 

       { 

        IplImage texttemp = new IplImage(new CvSize(140, 27), bimg.Depth, bimg.NChannels); 

       // texttemp.Flip(null , FlipMode.X); 


        Cv.Resize(bimg, texttemp); 

        text.Add(texttemp); 
        frame.Rectangle(item.Value.Rect, new CvScalar(0, 0, 255), 2, LineType.Link4); 
       // frame.Flip(null, FlipMode.X); 
       // frame.Rectangle(item.Value.Rect, new CvScalar(0, 0, 255), 2, LineType.Link4)=RotateFlipType.Rotate180FlipNone() 
        // RotateFlipType.Rotate180FlipX(frame.Rectangle(item.Value.Rect, new CvScalar(0, 0, 255), 2, LineType.Link4)); 
        // flipImage=frame.Rectangle(item.Value.Rect, new CvScalar(0, 0, 255), 2, LineType.Link4); 
       } 
      } 

      textList.Clear(); 

     } 
     return pathImage; 
    } 

答えて

1

私はコメントに必要な評判を持っていないので、これは回答の形でなければなりません。あなたが入力したのと同じ値を返すので、pathImageはテキストを見つけるためにすべての処理を行った後に値を取得しないようです。

+0

あなたのコメントPathımageは価値を得るが、私はここでこれらのコードを追加することを忘れていますさらに、私はデバッグを入れたら私のコードはすべての処理を行っています:(もしıがここにこれらのコードを追加できる場合 – stackopen

+0

ここにコードを追加する前に次のリンクを見てください:http: /stackoverflow.com/questions/34366083/i-need-recognize-text-in-image-using-opencvsharp –

+1

ありがとう、私はそれを読んで私たちの問題とコードは違っていますが、ıが再びそれを読むでしょう – stackopen

関連する問題