Python+OpenCV:实现左键选 ROI 点、显示多边形,双击结束并展示原图像与采集 ROI 图像
以下是一个使用 Python 和 OpenCV 库实现左键点击选取 ROI 点并显示 ROI 多边形,双击左键结束选择,同时显示原始图片和采集的 ROI 图像的示例代码: ```python import cv2 # 全局变量用于存储 ROI 点 points = [] drawing = False def draw_roi(event, x, y, flags, param): global points, drawing if event == cv2.EVENT_LBUTTONDOWN: drawing = True points.append((x, y)) elif event == cv2.EVENT_LBUTTONUP: drawing = False elif event == cv2.EVENT_MOUSEMOVE and drawing: points.append((x, y)) # 读取原始图像 img = cv2.imread('your_image.jpg') cv2.namedWindow('image') cv2.setMouseCallback('image', draw_roi) while True: temp_img = img.copy() if len(points) > 0: cv2.polylines(temp_img, [np.array(points)], isClosed=False, color=(0, 255, 0), thickness=2) cv2.imshow('image', temp_img) key = cv2.waitKey(1) & 0xFF if key == 27: # 按下 Esc 键退出 break elif key == 13: # 双击左键(回车键)结束选择 if len(points) >= 3: roi_mask = np.zeros(img.shape[:2], dtype=np.uint8) cv2.fillPoly(roi_mask, [np.array(points)], 255) roi_img = cv2.bitwise_and(img, img, mask=roi_mask) cv2.imshow('ROI Image', roi_img) cv2.waitKey(0) cv2.destroyWindow('ROI Image') points = [] cv2.destroyAllWindows() ``` 在上述代码中,首先读取原始图像。通过鼠标事件函数`draw_roi`记录左键点击的坐标点。当双击左键(回车键)时,根据记录的点生成 ROI 并显示 ROI 图像。 请将`'your_image.jpg'`替换为您实际的图像路径。运行代码后,在图像窗口中通过左键点击选取 ROI 点,双击左键结束选择。 ######[AI写代码神器 | 531点数解答 | 2024-11-09 13:23:27]
- Java 继承实现:重温经典剪刀石头布游戏(字节豆包 | 451点数解答 | 2024-10-20 19:57:58)485
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)498
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)383
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)451
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)443
- OpenCV.js 轻松实现图片识别:详细步骤全解析 ( | 824点数解答 | 2024-03-22 16:22:16)209
- OpenCV.js 实战:轻松识别图片中电梯轮廓( | 1193点数解答 | 2024-03-22 16:23:32)224
- 用 C++ 和 OpenCV 生成带随机偏移的圆周上的点:代码剖析(字节豆包 | 29点数解答 | 2024-11-06 23:40:42)277
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)352
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)421
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)445
- Java调用Python接口中文乱码问题:字符编码统一解决方案(讯飞星火 | 344点数解答 | 2024-06-06 17:19:55)552