同步发于JuzerTech网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。
OpenCV 可以透过一些函数,来绘制直线、圆形、矩形、多边形、文字于图片上。下面我们一一来看如何进行这些绘制。
畫直線
cv2.line(img,pt1,pt2,color[, thickness[, lineType[, shift]]])
函数为上方所示,需要输入的参数有图像、起始点、终止点、颜色等三个,后面则为选择性添加的选项,如线条粗细、线的类型等等。详细可以参考 OpenCV 的 Docs。
import cv2
import numpy as np
picture = np.ones((100,100,3),'uint8')
picture = picture*255
picture_line = cv2.line(picture,(0,0),(50,50),(255,0,0),2)
cv2.imshow('line',picture_line)
cv2.waitKey(0)
上方为程式码与绘制完的图像,程式码前 2 行为引入 OpenCV、numpy,第四行为建立一个 100 x 100 的图片,第 5 行乘以 255 目的是让数值全部都是 255 ,(255,255,255) 代表白色的意思,第 7 行为画一条 (0,0) 到 (50,50) 的直线,这边设定 (50,50) 是为了让读者了解起始点的算法是左上角开始,颜色我们填入 (255,0,0) 是蓝色 ,三个空格依序是 BGR , 第 9 、10 行是显示的部分 (不懂显示的可以回去看前面一篇关于显示图片的文章与 waitKey 的文章)。
画圆形
cv2.circle(img,center,radius,color[, thickness[, lineType[, shift]]])
函数为上方所示,需要输入的参数有图像、圆心、半径、颜色等三个,后面则为选择性添加的选项,如线条粗细、线的类型等等。详细可以参考 OpenCV 的 Docs。
import cv2
import numpy as np
picture = np.ones((200,200,3),'uint8')
picture = picture*255
picture_circle = cv2.circle(picture,(100,100),20,(255,0,0),2)
cv2.imshow('line',picture_circle)
cv2.waitKey(0)
上方为程式码与绘制完的图像,程式码前 2 行为引入 OpenCV、numpy,第四行为建立一个 200 x 200 的图片 (因为前一张图太小了放大一点),第 5 行乘以 255 目的是让数值全部都是 255 ,(255,255,255) 代表白色的意思,第 7 行为画一个 (100,100) 为圆心半径 20 的圆,颜色我们填入 (255,0,0) 是蓝色 ,三个空格依序是 BGR , 第 9 、10 行是显示的部分 (不懂显示的可以回去看前面一篇关于显示图片的文章与 waitKey的文章)。
畫矩形
cv2.rectangle(img,pt1,pt2,color[, thickness[, lineType[, shift]]])
函数为上方所示,需要输入的参数有图像、矩形左上点、矩形右下点、颜色等三个,后面则为选择性添加的选项,如线条粗细、线的类型等等。详细可以参考 OpenCV 的 Docs。
import cv2
import numpy as np
picture = np.ones((200,200,3),'uint8')
picture = picture*255
picture_rectangle = cv2.rectangle(picture,(50,50),(150,150),(255,0,0),2)
cv2.imshow('line',picture_rectangle)
cv2.waitKey(0)
上方为程式码与绘制完的图像,程式码前 2 行为引入 OpenCV、numpy,第四行为建立一个 200 x 200 的图片,第 5 行乘以 255 目的是让数值全部都是 255 ,(255,255,255) 代表白色的意思,第 7 行为画一 (50,50) 到 (150,150) 的矩形,颜色我们填入 (255,0,0) 是蓝色 ,三个空格依序是 BGR , 第 9 、10 行是显示的部分 (不懂显示的可以回去看前面一篇关于显示图像的文章与 waitKey 的文章)。
印上文字
函数为上方所示,需要输入的参数有图像、显示的文字、文字左下角的点 (org)、文字字体 (fontFace)、文字大小 (fontScale),后面则为选择性添加的选项,如线条粗细、线的类型等等。详细可以参考 OpenCV 的 Docs。
cv2.putText(img,text,org,fontFace,fontScale,color[, thickness[, lineType[, shift]]])
import cv2
import numpy as np
picture = np.ones((200,200,3),'uint8')
picture = picture*255
picture_text = cv2.putText(picture,"Hello World",(20,100),cv2.FONT_HERSHEY_SCRIPT_COMPLEX,1.0,(255,0,0),2)
cv2.imshow('text',picture_text)
cv2.waitKey(0)
上方为程式码与绘制完的图像,程式码前 2 行为引入 OpenCV、numpy,第四行为建立一个 200 x 200 的图片,第 5 行乘以 255 目的是让数值全部都是 255 ,(255,255,255) 代表白色的意思,第 7 行为显示文字 Hello World,颜色我们填入 (255,0,0) 是蓝色 ,三个空格依序是 BGR , 第 9 、10 行是显示的部分 (不懂显示的可以回去看前面一篇关于显示图像的文章与 waitKey 的文章)。