2017-11-30 10 views
0

see imageオープンなcv pythonで色付きオブジェクトの周りに長方形を描画するにはどうすればよいですか?どのように私は(フレームウィンドウ)オリジナルカムで表示されます(マスクウィンドウ内の)白いオブジェクトに矩形を描くことができ

私のコード:私の悪い英語のため申し訳ありません

import cv2 
    import numpy as np 
    cap = cv2.VideoCapture(0) 

    while(1): 
     # Take each frame 
     _, frame = cap.read() 
     # Convert BGR to HSV 
     hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) 
     # define range of red color in HSV 
     lower_blue = np.array([0,89,190]) 
     upper_blue = np.array([180,255,255]) 
     # Threshold the HSV image to get only red colors 
     mask = cv2.inRange(hsv, lower_blue, upper_blue) 
     # Bitwise-AND mask and original image 
     res = cv2.bitwise_and(frame,frame, mask= mask) 
     cv2.imshow('frame',frame) 
     cv2.imshow('mask',mask) 
     cv2.imshow('res',res) 
     k = cv2.waitKey(5) & 0xFF 
     if k == 27: 
      break 
    cv2.destroyAllWindows() 

私はそれを改善するために最善を尽くしています。

答えて

1

同様Tiphelあなたはcv2.findContoursとcv2.drawContoursを使用することができる、と述べました。また、輪郭を取得した後、cv2.boundingRect()関数を使ってボックスを描画することもできます。これは、x、y、w、hという4つの引数を返します。 x、yは点を表し、w、hはそれぞれ長方形の高さの幅を表す。次に、cv2.rectangleを使用して長方形を描画することができます。あなたはcnts2(

は=ソートcont_sorted

I、輪郭、階層構造= cv2.findContours(a_thresh、cv2.RETR_EXTERNAL、cv2.CHAIN_APPROX_SIMPLE)など楕円、円、のように、あまりにも同様に他の形状にフィットすることができます、キー= cv2.contourArea、逆= TRUE)[5]

X、Y、W、H = cv2.boundingRect(cont_sorted [0])

cv2.rectangle((X、Y )、(x + w、y + h)、(0,0,255)、5)

ここで、a_threshは、入力画像を閾値処理した後の2値画像である。 cv2.rectange()関数では、最初の引数は描画するイメージに対応し、4番目の引数は色を指定し、5番目は矩形描画に使用する線の太さを指定します。

また、「ソート」を使用してサイズの上位5輪郭を取得し、理想的には最も関心のあるオブジェクトは最大面積のものになります。

これらのオンラインマニュアルはあります。アプリケーションで適切に使用するために、上で使用したすべての関数のドキュメントを読むことをお勧めします。

0

cv2.findContoursを使用してマスクされた画像上のオブジェクトを見つけ、cv2.drawContoursを表示してください。

Doc here

関連する問題