OpenCV-Python은 컴퓨터 비전 문제를 해결하기 위해 설계된 Python 링크 라이브러리입니다. cv2.circle() 메서드는 모든 이미지에 원을 그리는 데 사용됩니다.
구문: cv2.circle(image, center_coordinates, radius, color, thickness)
매개변수:
이미지: 원이 그려지는 이미지입니다.
center_coordinates: 원의 중심 좌표입니다. 좌표는 두 값(예: X 좌표 값, Y 좌표 값)의 튜플로 표시됩니다.
반지름: 원의 반지름.
색상: 그릴 원의 경계선 색상입니다. BGR의 경우 튜플을 전달합니다. 예: 파란색의 경우 (255, 0, 0).
두께: 원 테두리 선의 두께(px)입니다. -1픽셀의 두께는 지정된 색상으로 원 모양을 채웁니다.
반환 값: 이미지를 반환합니다.
OpenCV 이미지 위에 원을 그리는 방법은 무엇입니까?
StackOverflow 질문
저는 python과 opencv를 사용하여 웹캠에서 이미지를 가져오고 싶습니다. 내 이미지 위에 원을 그리는 방법을 알고 있습니다. 투명한 채우기가 있는 단순한 녹색 원입니다.
내 코드:
가져오기 cv2 가져오기 numpy 가져오기 시스템 if __name__ == `__main__`: #웹캠에서 현재 프레임 가져오기 캠 = cv2.VideoCapture(0) img = cam.read() #호 w 원을 그립니다???? cv2.imshow(`WebCam`, img) cv2.waitKey()
미리 감사합니다.
답변
cv2.circle(img, 중심, 반경, 색상, 두께=1, lineType=8, shift=0) ‚Üí 없음 원을 그립니다. 매개변수: img(CvArr) ‚Äì 원이 그린 중심(CvPoint)인 이미지 ‚Äì 원 반경의 중심( int) ‚Äì 원 색상의 반경(CvScalar) ‚Äì 원 색상 두께(int) ‚Äì 원 외곽선의 두께 이면 양수이고, 그렇지 않으면 채워진 원이 그려야 함을 나타냅니다. lineType (int ) ‚Äì 원 경계의 유형, 선 설명 이동 참조(int) ‚Äì 중심 좌표 및 반경 값
의 분수 비트 수 테두리에만 "두께" 매개변수를 사용합니다.
예제 #1
def blob(x): """덩어리 위치와 크기의 Nx3 행렬이 주어지면 N img_size x를 만듭니다. img_size 이미지, 각각 x의 각 행에 있는 값에 의해 주어진 blob x의 한 행 = [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, riderData): self .img = np.zeros((self.height, self.width, self.channels), np.uint8) cv2.line(self.img, (10, 0), (self.width/2 - 5, self. 높이), (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): 만약 str(track_number)+`_track_range` in 레이더Data: track_range = riderData[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("레이더", self.img) cv2.waitKey( 2)
예제 #3
def ProcessFrame(self, frame): # segment arm region 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) # 선체 찾기 분할된 영역의, 그리고 그것을 기반으로 # convexity defect [contours,defects] = self.FindHullDefects(segment) # 윤곽과 볼록 결함에 따라 손가락의 수를 감지합니다. # 손가락에 속하는 결함을 녹색으로, 나머지는 빨간색으로 그립니다. [nofingers,draw] = self.DetectN umberFingers(contours, defect, draw) # 이미지에 손가락 수 인쇄 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)): #ind_x in xrange(int(x+0.3*w),int(x+ 0.6*w)): #폭의 영역이 약 0.3 ~ 0.6입니다(결과가 확인되면 더 빠르게 계산) 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=거짓 반환 frame_in,pt,max_d,thresh_score # 6. 제스처 찾기 및 표시
예제 #5
def update(self, riderData): 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` 레이더 데이터에서: track_range = 레이더데이터[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.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("레이더", self.img) cv2.waitKey(2)
보관된 버전
OpenCV-Python —¬†는 Python 바인딩입니다. 컴퓨터 비전 문제 해결을 위한 라이브러리.¬†cv2.circle ()
모든 이미지에 원을 그리는 데 사용됩니다.
구문: cv2.circle(이미지, center_coordinates, 반지름, 색상, 두께)
매개변수:
이미지: 원이 그려지는 이미지입니다.
center_coordinates: 원의 중심 좌표입니다.¬†좌표는 두 값 ‚Äã‚Äãie( X 좌표 값, Y 좌표 값).
반지름: 원의 반지름입니다.
색상: 그릴 원의 경계선 색상입니다. ¬† BGR 의 경우 통과 sa 튜플.¬†예: 파란색의 경우 (255, 0, 0).
두께: 픽셀 단위의 원 테두리 선의 두께입니다.¬ †두께 -1픽셀 은 지정된 크기만큼 rectangle-method/">사각형 모양을 채웁니다. color.반환 값: 이미지를 반환합니다.
이미지는 아래의 모든 예에 사용됩니다.
예시 #1:
<표 테두리 = "0" cellpadding = "0" cellspacing = "0">
# cv2.circle () 메서드를 설명하는 파이썬 프로그램
 
# cv2 import
import
cv2 
 
# 경로
경로
=
r
`C: UsersRajnishDesktoppythonengineeringgeeks.png`
 
¬†# 기본 모드에서 이미지 읽기
이미지
=
cv2.imread (경로)
 
# 이미지가 표시됩니다.
window_name
=
`이미지 `
 
¬†# 중심 좌표
<코드 클래스 = "일반"> center_coordinates <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> ( <코드 클래스 = "값" > 120 <코드 클래스 = "일반">, <코드 클래스 = "값 "> 50
)
 
# 원 반경
<코드 클래스 = "일반"> 반경 <코드 클래스 = "키워드"> = <코드 클래스 = "값"> 20
 
¬†# BGR의 파란색
색상
<코드 클래스 = "키워드"> = <코드 클래스 = "일반"> ( <코드 클래스 = "값"> 255 < 코드 클래스 = "일반">, <코드 클래스 = "값"> 0 <코드 클래스 = "일반">, <코드 클래스 = "값"> 0)
 
# 라인 너비 2px
두께
=
2
 
# cv2.circle () 메서드 사용
<코드 클래스 = "주석 s"> # 2픽셀의 파란색 테두리가 있는 원 그리기
이미지
=
cv2.circle(이미지, center_coordinates, 반경, 색상, 두께 )
 
# 이미지 표시
cv2.imshow ( window_name, 이미지)¬†
출력:
예제 2:
사용 - rectangle-method/">사각형을 빨간색으로 채우기 위한 1픽셀 두께입니다.<표 테두리 = "0" cellpadding = "0" cellspacing = "0">
# cv2.circle () 메서드
 
# cv2 가져오기
가져오기
cv2 
 
# 경로
경로
=
r
`C: UsersRajnishDesktoppythonengineeringgeeks.png`
 
# 기본 모드에서 이미지 읽기
이미지
=
cv2.imread (경로)
 
# 이미지가 표시되는 창의 이름
window_name
=
`이미지`
 
¬†# 중심 좌표
center_c 좌표
<코드 클래스 = "키워드" > = <코드 클래스 = "일반"> ( <코드 클래스 = "값"> 120 <코드 클래스 = "일반 ">, <코드 클래스 = " 값 "> 100 <코드 클래스 ="일반 ">)
¬ †
¬†# 원 반경
반경
=
30
 
¬†# BGR의 빨간색
color
=
<코드 클래스 = "일반"> ( <코드 클래스 = "값 "> 0 <코드 클래스 ="일반 ">, <코드 클래스 ="값 "> 0 <코드 클래스 ="일반 ">, <코드 클래스 = "값"> 255 <코드 클래스 = "일반">)¬†
# 선 두께 -1px
두께
=
-
1
 
# 사용 cv2.circle () 메서드
# -1px 빨간색 원 그리기
이미지
=
cv2.circle (이미지, center_coordinates, 반경, 색상, 두께)
< code class = "undefined space">  
# 이미지 표시
< 코드 클래스 = "일반"> cv2.imshow (window_name, 이미지)¬†¬†
출력: