cv2.circle()用法示例
时间: 2023-08-28 14:06:19 浏览: 86
以下是cv2.circle()用法示例:
```
import cv2
# 创建一个黑色图像
img = np.zeros((512,512,3), np.uint8)
# 在图像中心创建一个红色圆形
cv2.circle(img,(256,256), 100, (0,0,255), -1)
# 显示图像
cv2.imshow("Circle", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码将在一个512x512的黑色图像中心创建一个红色圆形,圆形的半径为100,填充颜色为(0,0,255)。最终结果将显示在一个名为"Circle"的窗口中。
相关问题
import cv2 import mediapipe as mp mpDraw = mp.solutions.drawing_utils mpPose = mp.solutions.pose pose = mpPose.Pose(static_image_mode=False, model_complexity=2, min_detection_confidence=0.5, min_tracking_confidence=0.5) cap = cv2.VideoCapture(0) while True: success, img = cap.read() imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) results = pose.process(imgRGB) if results.pose_landmarks: for landmark_list in results.pose_landmarks: for idx, landmark in enumerate(landmark_list.landmark): h, w, c = img.shape cx, cy = int(landmark.x * w), int(landmark.y * h) cv2.circle(img, (cx, cy), 5, (0, 255, 0), -1) cv2.imshow("Image", img) if cv2.waitKey(1) == ord('q'): break cap.release() cv2.destroyAllWindows()
这段代码是使用OpenCV和MediaPipe库进行实时人体姿势估计的示例代码。它使用计算机的摄像头捕获图像,并通过姿势估计模型检测和跟踪人体姿势关键点,并在图像上绘制出来。
首先,通过导入必要的库(cv2和mediapipe),创建一个姿势估计对象(mpPose.Pose)。然后,通过cv2.VideoCapture(0)创建一个视频捕获对象,指定使用计算机的摄像头作为视频源。
接下来,使用while循环不断读取摄像头捕获的图像。将图像转换为RGB格式,并使用pose.process()方法对图像进行姿势估计。
如果检测到人体姿势关键点,就遍历关键点列表,并通过计算将关键点位置映射到图像上,并使用cv2.circle()方法在图像上绘制关键点的圆圈。
最后,使用cv2.imshow()方法显示带有绘制关键点的图像。如果按下键盘上的'q'键,循环终止。
在结束时,释放视频捕获对象并关闭所有窗口。
请注意,这段代码只是一个简单的示例,可能需要根据具体需求进行修改和优化。
cv2.HoughCircles
cv2.HoughCircles是OpenCV库中的一个函数,用于在图像中进行圆形检测。该函数的返回结果与参数设置有很大的关系。下面是一个关于cv2.HoughCircles的介绍和示例代码:
1. HoughCircles说明:
cv2.HoughCircles函数的语法如下:
```python
cv2.HoughCircles(image, method, dp, minDist, param1, param2, minRadius, maxRadius)
```
参数说明:
- image:输入的单通道灰度图像。
- method:定义检测方法,目前只支持cv2.HOUGH_GRADIENT。
- dp:累加器分辨率与图像分辨率的比值。dp越小,累加器数组越大。
- minDist:检测到的圆心之间的最小距离。
- param1:用于Canny边缘检测的高阈值。
- param2:累加器阈值,低于该阈值的圆将被忽略。
- minRadius:圆的最小半径。
- maxRadius:圆的最大半径。
2. 代码:
下面是一个使用cv2.HoughCircles函数进行圆形检测的示例代码:
```python
import cv2
import numpy as np
# 读取图像
image = cv2.imread('coins.jpg', 0)
# 预处理图像
blur = cv2.medianBlur(image, 5)
edges = cv2.Canny(blur, 50, 150)
# 检测圆形
circles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, dp=1, minDist=50, param1=50, param2=30, minRadius=0, maxRadius=0)
# 绘制检测到的圆形
if circles is not None:
circles = np.uint16(np.around(circles))
for circle in circles[0, :]:
center = (circle[0], circle[1])
radius = circle[2]
cv2.circle(image, center, radius, (0, 255, 0), 2)
# 显示结果
cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
3. 结果:
上述代码将在图像中检测出圆形,并在原图上绘制出检测到的圆形。
阅读全文