[VB]OpenCVによるハフ変換
- 題名: [VB]OpenCVによるハフ変換
- 著者: 774
- 日時: 2013/08/25 18:21:56
- ID: 31764
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: [VB]OpenCVによるハフ変換
- 著者: オショウ
- 日時: 2013/08/25 22:59:42
- ID: 31765
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: [VB]OpenCVによるハフ変換
- 著者: 774
- 日時: 2013/08/25 23:16:09
- ID: 31766
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: [VB]OpenCVによるハフ変換
- 著者: オショウ
- 日時: 2013/08/25 23:38:41
- ID: 31767
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: [VB]OpenCVによるハフ変換
- 著者: 774
- 日時: 2013/08/25 23:52:22
- ID: 31768
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: [VB]OpenCVによるハフ変換
- 著者: 774
- 日時: 2013/08/27 9:16:04
- ID: 31778
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
OS: Windows7 開発環境: Visual Studio Express 2012 使用言語: Visual Basic 2012 こんにちは。774と申します。最近VBを学び始め,簡単な画像処理プログラムを作成しています。現在はエッジ検出した画像から直線を検出するハフ変換の実装を目標に取り組んでいます。 ハフ変換用にopencvを導入し,公開されているサンプルソースコードをVBで使えるように変換しているのですが、行き詰まってしまい質問させて頂きました。 参考ソースコード→http://opencv.jp/sample/special_transforms.html 上記ページのcvHoughLines2、標準的なハフ変換を参考にしています。 下記ソースコードで、コメントアウト標準的なハフ変換のfor文以降でエラーがでてしまいます。グレースケール、エッジ検出までは自力で完成させていたため、filenameに保存したファイルのパスを与えています。どこが間違っているのでしょうか。 自分なりに問題を検索してみたのですが解決できず、やむを得ず質問させて頂きました。よろしければお力添え宜しくお願いいたします。 ●自作ソースコード Private Sub hough_Standard() Dim i As Integer Dim line As Pointer(Of Single), rho As Pointer(Of Single), theta As Pointer(Of Single) Dim a As Double, b As Double, x0 As Double, y0 As Double Dim src_img_std As IplImage Dim src_img_prob As IplImage Dim src_img_gray As IplImage Dim storage As CvMemStorage Dim lines As CvSeq Dim point As Pointer(Of CvPoint), pt1 As Pointer(Of CvPoint), pt2 As Pointer(Of CvPoint) '画像の読み込み src_img_gray = Cv.LoadImage(filename, LoadMode.Color) storage = Cv.CreateMemStorage(0) '標準的ハフ変換 lines = Cv.HoughLines2(src_img_gray, storage, HoughLinesMethod.Standard, 1, Cv.PI / 180, 50, 0, 0) For i = 0 To i < lines.Total line = CType(lines.GetSeqElem(lines, i), Pointer(Of Single)) rho = line(0) theta = line(1) a = Cos(theta) b = Sin(theta) x0 = a * rho y0 = b * rho pt1.x = Cv.Round(x0 + 1000 * (-b)) pt1.y = Cv.Round(y0 + 1000 * (a)) pt2.x = Cv.Round(x0 - 1000 * (-b)) pt2.y = Cv.Round(y0 - 1000 * (a)) Cv.Line(src_img_std, pt1, pt2, Cv.RGB(255, 0, 0), 3, 8, _ 0) Next ●エラー一覧 エラー 1 'Public Function GetSeqElem(Of T As Structure)(index As Integer) As T?' に対する引数が多すぎます。 エラー 2 構造体 'OpenCvSharp.Pointer(Of Single)' には既定のプロパティがないため、インデックス処理を実行できません。 エラー 3 構造体 'OpenCvSharp.Pointer(Of Single)' には既定のプロパティがないため、インデックス処理を実行できません。 エラー 4 演算子 '*' は、型 'Double' および 'OpenCvSharp.Pointer(Of Single)' に対して定義されていません。 エラー 5 演算子 '*' は、型 'Double' および 'OpenCvSharp.Pointer(Of Single)' に対して定義されていません。 エラー 6 'x' は 'OpenCvSharp.Pointer(Of OpenCvSharp.CvPoint)' のメンバーではありません。 エラー 7 'y' は 'OpenCvSharp.Pointer(Of OpenCvSharp.CvPoint)' のメンバーではありません。 エラー 8 'x' は 'OpenCvSharp.Pointer(Of OpenCvSharp.CvPoint)' のメンバーではありません。 エラー 9 'y' は 'OpenCvSharp.Pointer(Of OpenCvSharp.CvPoint)' のメンバーではありません。