PythonOpenCVメソッド| cv2.circle()

| | | | | | | | | | |

OpenCV-Pythonは、コンピュータービジョンの問題を解決するために設計されたPythonリンクライブラリです。 cv2.circle()メソッドは、任意の画像に円を描くために使用されます。

構文: cv2.circle(image、center_coordinates、radius、color、thickness)
パラメータ: 
画像:円を描く画像です。 
center_coordinates:円の中心座標です。座標は、2つの値のタプルとして表されます。つまり( X 座標値、 Y 座標値)。 
半径:です。円の半径。 
色:描画する円の境界線の色です。 BGR の場合、タプルを渡します。例:青色の場合は(255、0、0)。 
太さ: pxの円の境界線の太さです。 -1 px の厚さは、指定された色で円の形を塗りつぶします。
戻り値:画像を返します。 
 

画像OpenCVの上に円を描く方法は?

StackOverflowの質問

Pythonとopencvを使用して、ウェブサイトから画像を取得しています。画像の上に円を描く方法を知りたいのですが、透明な緑色の単純な円だけです。記入

マイコード:

  インポートcv2  import  numpy  import  sys  if  __name__ == `__main __` #ウェブサイトから現在のフレームを取得 cam=cv2。 VideoCapture( 0 )img = cam.read()#円を描く方法????  cv2.imshow(`WebCam` 、img)cv2.waitKey() 

よろしくお願いします。

回答

  cv2.circle(img、center、radius、color、thickness =  1 、lineType =  8 、shift =  0 )、なし円を描きます。パラメータ:img(CvArr)、円のが描かれた画像の中心(CvPoint)、円の半径の中心( int )、円の色の半径(CvScalar)、円の色の厚さ( int )、円の輪郭の厚さ if が正の場合、これは塗りつぶされた円描画されることを示しますlineType( int )、円の境界のタイプ。線の説明のシフト( int )を参照してください。中心座標および半径値

の小数ビット数境界線のみに「thickness」パラメータを使用します。

例1

 def blob(x): "" "blobの位置とサイズのNx3マトリックスを指定して、Nimg_sizexを作成します。 img_size画像、それぞれにxの各行の値によって与えられるそれらに描かれたブロブxの1つの行=[x、y、radius]。 "" "y = np.zeros((x.shape [0]、img_size、img_size))for i 、enumerate(x)の粒子:rr、cc = skimage.draw.circle(particle [0]、particle [1]、max(particle [2]、1)、shape =(img_size、img_size))y [i、 rr、cc] = 1 return y#%%#名前(これは今のところ参照用です!)

例#2

 def update(self、radarData):self .img = np.zeros((self.height、self.width、self.channels)、np.uint8)cv2.line(self.img、(10、0)、(self.width / 2-5、self。 height)、(100、255、255))cv2.line(self.img、(self.width-10、0)、(self.width / 2 + 5、self.height)、(100、255、255) )for track_number in range(1、65):if str(track_number)+`_track_range` inradarData:track_range =radarData [str(track_number)+`_track_range`] track_angle =(float(radarData [str(track_number)+`_track_angle `])+ 90.0)* math.pi / 180 x_pos = math.cos(track_angle)* track_range * 4 y_pos = math.sin(track_angle)* track_range * 4 cv2.circle(self.img、(self.w idth / 2 + int(x_pos)、self.height --int(y_pos)-10)、5、(255、255、255))#cv2.putText(self.img、str(track_number)、#(self.width / 2 + int(x_pos)-2、self.height --int(y_pos)-10)、self.font、1、(255,255,255)、2)cv2.imshow( "Radar"、self.img)cv2.waitKey( 2)

例#3

 def ProcessFrame(self、frame):#セグメントアーム領域segment = self.SegmentArm(frame)#セグメント化された画像のコピーを作成して描画draw = cv2.cvtColor(segment、cv2。 COLOR_GRAY2RGB)#手を正しく配置するためのヘルパーを描画しますcv2.circle(draw、(self.imgWidth / 2、self.imgHeight / 2)、3、[255,102,0]、2)cv2.rectangle(draw、(self.imgWidth /3,self.imgHeight/3)、(self.imgWidth * 2/3、self.imgHeight * 2/3)、[255,102,0]、2)#セグメント化された領域の船体を検索し、その検索に基づいて#凸状欠陥[contours、defects] = self.FindHullDefects(segment)#輪郭と凸状欠陥に応じて指の数を検出します#指に属する欠陥を緑色に描画し、その他は赤色に描画します[nofingers、draw] = self.DetectNumberFingers(輪郭、欠陥、描画)#画像に指の数を印刷cv2.putText(draw、str(nofingers)、(30,30)、cv2。FONT_HERSHEY_SIMPLEX、1、(255,255,255))return draw 

例#4

 def mark_hand_center(frame_in、cont):max_d = 0 pt =(0,0)x、y、w、h = cv2.boundingRect(cont)for ind_y in xrange(int(y + 0.3 * h)、int(y + 0.8 * h)):#xrange(int(x + 0.3 * w)、int(x + 0)のind_xの高さの約0.25から0.6の領域(okの結果によるより高速な計算) .6 * w)):#幅の約0.3から0.6の領域(okの結果でより高速な計算)dist = cv2.pointPolygonTest(cont、(ind_x、ind_y)、True)if(dist> max_d):max_d = dist pt = (ind_x、ind_y)if(max_d> radius_thresh * frame_in.shape [1]):thresh_score = True cv2.circle(frame_in、pt、int(max_d)、(255,0,0)、2)else:thresh_score = False return frame_in、pt、max_d、thresh_score#6。ジェスチャーを見つけて表示する

例#5

 def update(self、radarData):self.img = np.zeros((self .height、self.width、self.channels)、np.uint8)cv2.line(self.img、(10、0)、(self.width / 2-5、self.height)、(100、255、255 ))cv2.line(self.img、(self.width-10、0)、(self.width / 2 + 5、self.height)、(100、255、255))for track_number in range(1、65 ):if str(track_number)+`_track_range` inradarData:track_range =radarData [str(track_number)+`_track_range`] track_angle =(float(radarData [str(track_number)+`_track_angle`])+ 90.0)*math。 pi / 180 x_pos = math.cos(track_angle)* track_range * 4 y_pos = math.sin(track_angle)* track_range * 4 cv2.cir cle(self.img、(self.width / 2 + int(x_pos)、self.height --int(y_pos)-10)、5、(255、255、255))#cv2.putText(self.img、str (track_number)、#(self.width / 2 + int(x_pos)-2、self.height --int(y_pos)-10)、self.font、1、(255,255,255)、2)cv2.imshow( "Radar" 、self.img)cv2.waitKey(2)