Метод Python OpenCV | cv2.circle()

| | | | | | | | | | | | | | | | | | | | | | | | | |

OpenCV-Python — это библиотека ссылок Python, предназначенная для решения проблем компьютерного зрения. Метод cv2.circle() используется для рисования круга на любом изображении.

Синтаксис: cv2.circle(изображение, center_coordinates, радиус, цвет, толщина)
Параметры: 
изображение: это изображение, на котором должен быть нарисован круг. 
center_coordinates: Это координаты центра круга. Координаты представлены в виде кортежей из двух значений, то есть (значение координаты X, значение координаты Y). 
радиус: радиус круга. 
цвет: это цвет линии границы круга, который будет нарисован. Для BGR мы передаем кортеж. например: (255, 0, 0) для синего цвета. 
толщина: толщина линии границы круга в пикселях. Толщина -1 пиксель заполнит форму круга указанным цветом.
Возвращаемое значение: возвращает изображение. 
 

Как нарисовать круг над изображением OpenCV?

Вопрос StackOverflow

Я использую python и opencv, чтобы получить изображение с веб-камеры, и я хочу знаю, как нарисовать круг поверх моего изображения, просто зеленый круг с прозрачной заливкой

enter описание изображения здесь

мой код:

импорт cv2 импорт numpy импорт sys if __name__ == `__main__`: #получить текущий кадр с веб-камеры = cv2.VideoCapture(0) img = cam.read() #ho w нарисовать круг???? cv2.imshow(`WebCam`, img) cv2.waitKey() 

Заранее спасибо.

Ответ

cv2.circle(img, центр, радиус, цвет, толщина=1, lineType=8, shift=0) ‚Üí Нет Рисует круг. Параметры: img (CvArr) — Изображение, в котором является центром нарисованной окружности (CvPoint) — Центр радиуса окружности ( int) — Радиус цвета окружности (CvScalar) — Толщина цвета окружности (int) — Толщина контура окружности если положительный, в противном случае это означает, что закрашенный круг должен быть нарисованным lineType (int ) — Тип границы окружности, см. Line description shift (int) — Количество дробных битов в координатах центра и значении радиуса 

Используйте параметр "толщина" только для границы.

Пример #1

def blob(x): """По заданной матрице Nx3 положений и размеров больших двоичных объектов создайте N img_size x изображения img_size, каждое с нарисованная на них капля, заданная значением в каждой строке x Одна строка x = [x, y, радиус].""" y = np.zeros((x.shape[0], img_size, img_size)) для i , частица в enumerate(x): rr, cc = skimage.draw.circle(частица[0], частица[1], max(частица[2], 1), shape=(img_size, img_size)) y[i, rr, cc] = 1 return y #%% # name (это пока просто для справки!) 

Пример #2

def update(self, RadeonData): 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) ) для номера_дорожки в диапазоне (1, 65): если str(номер_дорожки)+`_диапазон_дорожки` в RadarData: диапазон_дорожки = RadarData[str(номер_дорожки)+`_диапазон_дорожки`] track_angle = (float(radarData[str(номер_дорожки)+`_угол_дорожки) `])+90.0)*math.pi/180 x_pos = math.cos(угол_дорожки)*диапазон_дорожки*4 y_pos = math.sin(угол_дорожки)*диапазон_дорожки*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 = 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) # найти корпус сегментируемой области и на его основе находим # дефекты выпуклости [контуры,дефекты] = self.FindHullDefects(segment) # определяем количество пальцев в зависимости от контуров и дефектов выпуклости # рисуем дефекты, принадлежащие пальцам зеленым цветом, остальные красным [без пальцев, рисовать] = self.DetectN umberFingers(контуры, дефекты, отрисовка) # вывести количество пальцев на изображении 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) для ind_y в xrange(int( y+0,3*h),int(y+0,8*h)): #от 0,25 до 0,6 области высоты (более быстрый расчет с хорошими результатами) для ind_x в 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=False return frame_in,pt,max_d,thresh_score # 6. Поиск и отображение жеста 

Пример №5

def update(self, RadeonData): 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)) для track_number в диапазоне (1, 65): if str(track_number)+`_track_range` в RadarData: 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.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) 


Архивная версия

OpenCV-Python —¬†является привязкой Python библиотека для решения задач компьютерного зрения.¬†cv2.circle () используется для рисования круга на любом изображении.

Синтаксис: cv2.circle (изображение, center_coordinates, радиус, цвет, толщина)

Параметры:
изображение: Это изображение, на котором должен быть нарисован круг.
center_coordinates: это координаты центра круга. ¬† Координаты представлены в виде кортежей из двух значений ‚Äã‚Äãie ( значение координаты X , значение координаты Y ).
радиус: это радиус круга.
цвет: Это цвет линии границы окружности, которую необходимо нарисовать. †Для BGR мы sa tuple.¬† Например: (255, 0, 0) для синего цвета.
толщина: Толщина линии границы круга в пикселях .¬ †Толщина -1 пиксель заполнит rectangle-method/">прямоугольник заданным color.

Возвращаемое значение: возвращает изображение.

Изображение используется во всех приведенных ниже примерах:

Пример № 1:

# Программа Python для объяснения метода cv2.circle ()

 
# cv2 import

import cv2 

 
# path

path = r `C: UsersRajnishDesktoppythonengineeringgeeks.png`

  
# Чтение изображения в режиме по умолчанию

изображение = cv2.imread (path)

 
# Имя окна, в котором отображается изображение

имя_окна = `Image `

  
# Координаты центра

center_coordinates = ( 120 , 50 )

 
# Радиус окружности

радиус = 20

  
# Синий цвет в BGR

color = ( 255 , 0 , 0 )

 
# Ширина линии 2 пикселя

толщина = 2

 
# Использование метода cv2.circle ()
# Нарисуйте круг с синей рамкой толщиной 2 пикселя

image = cv2.circle (изображение, center_coordinates, радиус, цвет, толщина )

 
# Показать изображение
cv2.imshow ( имя_окна, изображение)¬†

Вывод:

Пример № 2:
Использование - толщиной 1 пиксель, чтобы заполнить rectangle-method/">прямоугольник красным.

# Программа Python для объяснения cv2.circle () метод

 
# cv2 import

import cv2 

 
# path

path = r `C: UsersRajnishDesktoppythonengineeringgeeks.png`

 
# Чтение изображения в режиме по умолчанию

image = cv2.imread (путь)

 
# Имя окна, в котором отображается изображение

имя_окна = `Изображение`

  
# Координаты центра

center_c координаты = ( 120 , 100 )

¬ †¬†
# Радиус окружности

радиус = 30

  
# Красный в BGR

color = ( 0 , 0 , 255 )

 
# Толщина линии -1 пиксель

толщина = - 1

 
# Использование метод cv2.circle ()
# Нарисуйте красный круг -1 пиксель

image = cv2.circle (изображение, center_coordinates, радиус, цвет, толщина)

< code class = "undefinedspaces">  
# Отображение изображения
cv2.imshow (имя_окна, изображение)¬†

 

Вывод: