DIY一个python画棋盘格的代码(改colors的顺序,可以改变黑白颜色出现的次序)
def draw_chessboard(row, col, size):
img = np.zeros([(row+1)*size, (col+1)*size])
colors = [0, 255]
for i in range(row+1):
for j in range(col+1):
img[i*size:(i+1)*size, j*size:(j+1)*size] = colors[j % 2]
colors = colors[::-1]
cv.imshow('img', img)
cv.waitKey(0)
cv.destroyAllWindows()
画出的棋盘有row个格点行,有col个格点列,size为每个格子的边长。
draw_chessboard(3, 3, 100)
画出的棋盘格效果如下图
寻找格点位置的程序如下,findChessBoardCorners接受的参数为img,size=(格点行数,格点列数)
def find_chessboard(img_path, size):
assert os.path.exists(img_path)
img = cv.imread(img_path)
ok, corners = cv.findChessboardCorners(img, size, None)
print(corners.shape)
if ok:
for pt in corners:
point = pt[0]
print(point)
cv.circle(img, center=(int(point[0]), int(point[1])), radius=10, color=(0, 0, 255), thickness=-1)
cv.imshow('img', img)
cv.waitKey(0)
cv.destroyAllWindows()
else:
print 'cannot find chessboard points'
程序的输出结果如下图
(9L, 1L, 2L)
[99.5 99.5]
[199.5 99.5]
[299.5 99.49999]
[ 99.50001 199.5 ]
[199.5 199.5]
[299.5 199.5]
[ 99.49999 299.5 ]
[199.5 299.5]
[299.5 299.5]
在原图上的效果如下图。可以看出findChessboardCorners这个方法找出的点是按照图像中的横向排列的,因为使用的图像是比较规则的,实际拍摄的图像找的格点的排列顺序并不一定是从上到下,从左到右,还要check一下。
版权声明:本文为qq_35565669原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。