0
点赞
收藏
分享

微信扫一扫

代码随想录算法训练营第三十一天

目录

一、概念

二、代码

2.1实现步骤

2.2完整代码

三、实现效果


一、概念

二、代码

2.1实现步骤

2.2完整代码

import cv2
import numpy as np
import glob

# 定义棋盘格的大小(内角点的个数)
chessboard_size = (11, 8) # 11x8的棋盘格

# 图像文件路径
image_files = glob.glob('file_path/*.png') # 替换为实际图像文件路径模式

# 检测并绘制棋盘格角点
for image_file in image_files:
# 读取图像
image = cv2.imread(image_file)
if image is None:
print(f"Image at {image_file} not found or failed to read")
continue

# 将图像转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 寻找棋盘格的角点
ret, corners = cv2.findChessboardCorners(gray_image, chessboard_size, None)

# 如果找到角点,则绘制它们
if ret:
# 优化角点位置
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
corners2 = cv2.cornerSubPix(gray_image, corners, (11, 11), (-1, -1), criteria)

# 绘制角点
cv2.drawChessboardCorners(image, chessboard_size, corners2, ret)

# 为每个角点添加数字标签
for i, corner in enumerate(corners2):
corner = tuple(map(int, corner.ravel())) # 确保corner是一个包含两个整数值的元组
cv2.putText(image, str(i+1), corner, cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1, cv2.LINE_AA)
# 显示结果
cv2.imshow('Chessboard Corners', image)
# 等待用户按下 ESC 键(ASCII 码 27)关闭窗口
while True:
if cv2.waitKey(100) == 27: # 每 0.1 秒检查一次
break
# cv2.waitKey(500) # 等待500毫秒,显示下一张图像
else:
print(f"Chessboard corners not found in image {image_file}")

cv2.destroyAllWindows()

三、实现效果

举报

相关推荐

0 条评论