turtle是python的一个很好玩的自动绘图工具。然而,用它来画一幅画需要提供大量的坐标点。有的人为了用它画出一幅好看的画不惜去手工计算图片线稿的描点的位置。心疼一秒。
其实我们完全可以用计算机图像识别来自动获取图片边缘的位置坐标,比如Opencv。
我们先直接上python的opencv一个基本案例。
import cv2
img = cv2.imread("E:/User/Desktop/psb.png")#读取一张图片
cv2.imshow("窗口标题",img)#在一个窗口显示图片
cv2.imread()是读取一个图像文件,然后将图像的像素信息转化成一个numpy矩阵,并返回
cv2.imshow()则是读取一个numpy矩阵信息,将其作为像素信息在新窗口中打印出来。
ok,读取图片工作完成了,那我们现在来获取图片的边缘信息
point=cv2.Canny(img, 000, 200)
这是边缘检测函数,将img图像的边缘像素信息作为numpy矩阵返回,里面的0和200这个参数是阈值范围参数,可自行调节。
虽然得到了边缘位置的信息,但这个矩阵信息却是显示的图像的矩阵的旋转矩阵。因此我们还需要对所得矩阵进行旋转,否则可能会得到倒过来的图像。
import numpy
point=numpy.rot90(black,k=3)
numpy.rot90()这个函数是矩阵顺时针旋转90度的函数,k代表旋转的次数,经过我的测试,要旋转3次才矫正(也就是逆时针一次)。
得到绘图点的像素信息后,我们开始用turtle进行绘图
import turtle