質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Q&A

解決済

1回答

2516閲覧

SURFをOpenCVSharpで作成中なのですが、エラーが...

BOSS723

総合スコア35

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

0グッド

0クリップ

投稿2016/11/09 11:37

今C#のOpenCVSharpでリアルタイムSURF検出のプログラムをかいているのですが、Cv.ExtractSURFの部分で、out imageDescriptorsだけエラーがでます。
一部だけですがコードをのせます。
Kinectで深度情報を得てそれをSURF検出するプログラムですが深度の部分は関係ないので割愛します。
どうしてもそこだけ原因がわからなかったのでアドバイスをもらえるとうれしいです。
ついでで良いですがなにか他におかしいところがあれば意見をください。

C#

1private void SensorDepthFrameReady(object sender, DepthImageFrameReadyEventArgs e) 2 { 3 while (true) 4 { 5 CvMemStorage storage = new CvMemStorage(0); 6 CvSeq<CvSURFPoint> imageKeypoints; 7 CvSeq<float> imageDescriptors; 8 CvSURFParams param = new CvSURFParams(500, true); 9 10 //OpenCV用画像 11 CvImg = Cv.CreateImage(new CvSize(640, 480), BitDepth.U8, 3); 12 //OpenCV用グレースケール画像 13 CvGrayImg = new IplImage(CvImg.Size, BitDepth.U8, 1); 14 15 using (DepthImageFrame depthImageFrame = e.OpenDepthImageFrame()) 16 { 17 if (depthImageFrame != null) 18 { 19 depthImageFrame.CopyPixelDataTo(depthFrame16); 20 convertDepthFrame(depthFrame16); 21 22 //WritablebitmapをIplImageに変換 23 CvImg = srcImg.ToIplImage(); 24 25 //グレースケール処理 26 Cv.CvtColor(CvImg, CvGrayImg, ColorConversion.BgrToGray); 27 28 //out imageDescriptors の場所にエラー表示 29 Cv.ExtractSURF(CvGrayImg, null, out imageKeypoints, out imageDescriptors, storage, param); 30 for (int i = 0; i < 100; i++) 31 { 32 CvSURFPoint point = Cv.GetSeqElem<CvSURFPoint>(imageKeypoints, i).Value; 33 CvPoint center = new CvPoint 34 { 35 X = Cv.Round(point.Pt.X), 36 Y = Cv.Round(point.Pt.Y) 37 }; 38 Cv.Circle(CvImg, center, 2, new CvScalar(0, 255, 255), 1); 39 } 40 depthImage.Source = BitmapSource.Create(depthImageFrame.Width, depthImageFrame.Height, 96, 96, PixelFormats.Bgr32, null, depthFrame32, depthImageFrame.Width * 4); 41 } 42 } 43 } 44 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

すみません!
質問したばかりですが原因わかりました。
CvSeq<float> imageDescriptors;ではなくCvSeq<IntPtr> imageDescriptors;でした。
普通に見てなかったです。

投稿2016/11/09 11:41

BOSS723

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問