电子说
OpenCV 简介,环境安装( python )
简介 :OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令,如今也提供对于C#、Ch、Ruby,GO的支持。
安装( Python ) :在需要安装的环境中直接输入pip install opencv-python
目录:
1 、读取、显示、保存图像、读取视频
** 2 、绘制直线、矩形、圆、椭圆、多边形、文本 **
3、图像基本认知:RGB、Gray、HSV等
4、通道分离与合并、色域转换、像素运算
5、案例总结(简易调色板,简易截图工具,人脸检测)
OpenCV****基本操作
1 、读取、显示、保存图像、读取视频
在cv2.imshow()之后要跟着cv2.waitkey(),waitkey()控制着imshow的持续时间,当imshow之后不跟waitkey时,只有一个空窗口一闪而过,相当于没有给imshow提供时间展示图像。destroyAllWindows()为销毁窗口。
def ReadImg():
# 创建窗口
cv2.namedWindow('demo',cv2.WINDOW_NORMAL)
# 调整窗口大小,(w,h)
cv2.resizeWindow('demo',500,300)
# 读取图像
img = cv2.imread("./images/test.jpg")
# 保存图像
cv2.imwrite('./images/rewrite.jpg',img)
# 转换灰度图
# black_white = cv2.imread("./images/test.jpg",cv2.IMREAD_GRAYSCALE)
cv2.imshow("demo",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
def ReadVideo():
# capture = cv.VideoCapture(0)
# 0是打开摄像头,也可以是输入视频文件的路径
capture = cv2.VideoCapture(0, cv2.CAP_DSHOW)
while True:
ret, frame = capture.read()
cv2.imshow("video", frame)
c = cv2.waitKey(10)
if c == 27: # 表示键盘输入的是ESC
break
# video_demo()
img = cv2.imread("./images/test.jpg")
print(type(img))
print(img.shape)
#
# (369, 720, 3)
读取的图像以numpy存储,img.shape返回图像的高、宽。
2 、绘制直线、矩形、圆、椭圆、多边形、文本
def DrawGraph():
# 创建一个纯黑的背景
bg = np.zeros([500,500,3],np.uint8)
# 画矩形,cv2.rectangle(img,左上角点,右下角点,颜色,线条宽度)
cv2.rectangle(bg,(0,0),(100,100),[0,255,0],2)
cv2.rectangle(bg,(100,100),(200,300),[0,0,255],2)
# 画圆, cv2.circle(img,圆心,半径,颜色,线条宽度)
cv2.circle(bg,(200,300),100,(255,0,0),2)
# 画椭圆,cv2.ellipse(img,中心点,长轴短轴,倾斜角度,开始角度,结束角度,color,thickness)
cv2.ellipse(bg,(200,100),(100,50),90,0,360,color=(255,255,0),thickness=2)
cv2.ellipse(bg,(200,100),(50,100),0,90,180,color=(255,0,255),thickness=2)
# 写文字,cv2.putText(img,"OpenCV",位置,字体,大小,颜色,宽度)
cv2.putText(bg,"OpenCV",(100,350),cv2.FONT_HERSHEY_SIMPLEX,2,(0,255,255),2)
# 绘制多边形
pts = np.array([(300, 100), (260, 200), (390, 200)], np.int32)
cv2.polylines(bg,[pts],True,(0,255,0),2)
cv2.fillPoly(bg,[pts],(105,10,90))
# 展示
cv2.imshow("demo", bg)
cv2.waitKey(0)
cv2.destroyAllWindows()
示例
注:坐标原点在图像左上角
行数,rows其实对应于坐标轴上的y,即表示的是图像的高度,竖直方向;
列数,cols对应于坐标轴上的x,即表示的是图像的宽度,水平方向;
椭圆中旋转为顺时针旋转。
全部0条评论
快来发表一下你的评论吧 !