2017-07-07 6 views
0

HOG + SVMメソッドを使用してカスタムオブジェクト検出器(チェア)を作成しようとしています。 関数のエラーimshow

  • 私のフォルダ内の画像を通じて

    • ループ読むと
    • hog.compute()関数を使用してベクトルにそれらを変換してからにそれらを保存し、それらのサイズを変更:行動の私の計画をしていますデータファイル

    すべてがうまくいけば、私のSVM分類器が残りを処理します。

    理想的には、私のウェブカメラで表示される椅子を識別することができます。私は、エラーをGoogleで検索してきた

    cv2.error: /Users/munirmalik/opencv/modules/highgui/src/window.cpp:304: error: (-215) size.width>0 && size.height>0 in function imshow 
    

    import cv2 
    import os 
    import numpy as np 
    
    def loadimg(): 
    
        for i in range(0,19): 
         image = cv2.imread(str(i)) 
         cv2.imshow("img",image) 
         (winW, winH) = (500, 500) 
         r = 128.0/image.shape[1] 
         dim = (128, int(image.shape[0] * r)) 
         img = cv2.resize(image, dim, interpolation = cv2.INTER_AREA) 
        return img 
    
    def hoggify(img): 
        imeg = hog.compute(img) 
        return imeg 
    
    for fn in os.listdir('/Users/munirmalik/cvprojek/cod'): 
    loadimg() 
    hoggify(imeg) 
    np.savetxt('data.txt') 
    

    これは私が得ているエラーは次のとおりです。ここで

    は、私は(唯一の初期ビット)を使用しようとしているコードですimread()は自分のイメージを読み込んでいないと言います。私はloadimg()関数のforループと関係があると仮定しています。

    誰かお手伝いできますか?また、あなたがこれをやって行くには良い方法を考えることができれば、私に知らせてください:)

  • 答えて

    1

    これはこれはcv2.imread("0")に変換コード内で

    for i in range(0,19): 
         image = cv2.imread(str(i)) 
    

    バグです。 cv2.imread() functonには "path/to/image.jpg"のような画像アドレスを渡す必要があります。

    :OPさんのコメントごとに、コードに変更する必要があるとして、私はあなたのイメージは、ファイル構造に配置されているかわからないんだけど、 cv2.imread()への引数はJPG、PNGなどのファイルの拡張子で終わる必要があります、など

    for i in range(0,19): 
         image = cv2.imread(r"/Users/munirmalik/cvprojek/cod/chairs/" + str(i)+ ".jpg") 
    
    +0

    どのようにしてパスと文字列 "i"をその関数に含めることができますか? image = cv2.imread( "/ Users/munirmalik/cvprojek/cod/chairs /" str(i))は私にエラーを返します –

    +0

    @MunirMalik答えを編集しました。あなたの画像は0.jpg、1.jpg、2.jpgなどですか? –

    +0

    Yeap!ありがとうございます! –

    関連する問題