opencv 入门 学习笔记

一.认识Opencv

开源计算机视觉(Opencv)是一个主要针对实时计算机视觉的编程函数库。

Opencv支持深度学习框架TensorFlow,Torch/PyTorch和Caffe。

二.Opencv的简单绘图和显示图片

1.显示图片

①显示图片

import cv2
import numpy as np
img = cv2.imread("D:/ppq")
img = cv2.resize(img,(360,360))
cv2.imshow('乒乓球',img)
cv2.waitKey(0)

这是代码执行后输出的图片

 其中,imread()是为了将图片提取出来,括号内就是图片的地址

resize()可以调整窗口的大小

imshow()是将窗口显示出来并为窗口命名

waitKey()则是窗口停留时间,括号内输入1,窗口则停留1秒,输入0或者不填可以让窗口永久停留,直到手动结束程序。

②绘图

import cv2
import numpy as np
img = 255*np.ones((700,700,3),np.uint8)
#兔子一号
cv2.ellipse(img,(350,100),(50,5),90,0,360,(203,192,255),-1)#耳朵
cv2.ellipse(img,(370,100),(50,5),135,0,360,(203,192,255),-1)#耳朵
cv2.circle(img,(350,150),50,(203,192,255),-1)#脑袋
cv2.ellipse(img,(350,220),(40,20),90,0,360,(203,192,255),-1)#身体
cv2.line(img,(330,200),(300,220),(203,192,255),3)#手臂 左
cv2.line(img,(370,200),(383,210),(203,192,255),3)#手臂 右
cv2.line(img,(383,210),(370,220),(203,192,255),3)#手臂 右
cv2.ellipse(img,(330,265),(20,10),0,0,360,(203,192,255),-1)#脚
cv2.ellipse(img,(370,265),(20,10),0,0,360,(203,192,255),-1)#脚
cv2.circle(img,(330,135),15,(255,255,255),-1)#眼睛
cv2.circle(img,(370,135),15,(255,255,255),-1)#眼睛
cv2.circle(img,(337,135),7,(0,0,0),-1)#眼球
cv2.circle(img,(338,137),1,(255,255,255),-1)#眼球左 高光1
cv2.circle(img,(336,133),2,(255,255,255),-1)#眼球左 高光2
cv2.circle(img,(363,135),7,(0,0,0),-1)#眼球
cv2.circle(img,(362,137),1,(255,255,255),-1)#眼球右 高光1
cv2.circle(img,(364,133),2,(255,255,255),-1)#眼球右 高光2
cv2.ellipse(img,(350,165),(20,5),0,0,170,(0,0,0),2)#嘴巴
cv2.ellipse(img,(320,155),(5,2),0,0,360,(0,0,255),-1)#腮红
cv2.ellipse(img,(380,155),(5,2),0,0,360,(0,0,255),-1)#腮红
cv2.ellipse(img,(300,220),(20,8),45,0,360,(100,100,255),-1)#胡萝卜
cv2.ellipse(img,(279,209),(5,1),5,0,360,(0,255,100),-1)#胡萝卜叶1
cv2.ellipse(img,(282,202),(5,1),35,0,360,(0,255,100),-1)#胡萝卜叶2
cv2.ellipse(img,(280,205),(5,1),355,0,360,(0,255,100),-1)#胡萝卜叶3
cv2.ellipse(img,(350,230),(20,10),90,0,360,(255,255,255),-1)#肚皮
cv2.putText(img,'Rabbit',(400,350),cv2.FONT_HERSHEY_DUPLEX,1,(0,0,0),2)#字符输入
cv2.imshow('peppa rabbit',img)
cv2.waitshow(0)

这是执行后的图片

 通过代码和图片我们可以知道,图片中的兔子由各种形状和各种颜色的图形所组成,如椭圆形,线段,圆形和矩形。而这些图形的属性由各种参数来实现。

现在,我们就来看看各种图形的参数所对应的属性是什么。

cv.ellipse(椭圆形)(img(图形显示在该图像上),(c1,c2)(椭圆中心的坐标),(c1,c2)(椭圆的长轴的一半长度,椭圆的短轴的一半长度),c1(图形旋转度数),c2(椭圆弧起始角度),c3(椭圆弧终止角度),(c1(blue),c2(green),c3(red))(这部分就是图形的颜色),c(图形粗细))

【注:对于RGB(颜色)部分,参数的范围是0-255】

【注:对于图形粗细,当输入参数=-1时,将会对图形进行填充,如果输入为正数,那么图形将是由不同粗细的线条所组成的】

cv.circle(圆形)(img(图形显示在该图像上),(c1,c2)(圆心坐标),c(圆的半径长度),(c1(blue),c2(green),c3(red)),c(粗细))

cv.line(线段)(img(图形显示在该图像上),(c1,c2)(线段起始点的坐标),(c1,c2)(线段终止点的坐标),(c1(blue),c2(green),c3(red)),c(粗细))

【注:线段的粗细参数没有负值】

cv.rectangle(矩形)(img(图形显示在该图像上),(c1,c2)(矩形左上角端点坐标),(c1,c2)(矩形右下角端点坐标),(c1(blue),c2(green),c3(red)),c(粗细))

对于字符输出:

如果想要在窗口上显示字符

就要输入类似此段的代码:cv2.putText(img(字符显示在此图像上),'Rabbit'(输入的字符),(400,350)(字符坐标),cv2.FONT_HERSHEY_DUPLEX(字体),1(大小),(0,0,0)(BGR),2(粗细))

此段代码则是对窗口的创建:img = 255*np.ones((700,700,3),np.uint8)

其中700,700是窗口长与宽的参数值。

当然,我们可以把对窗口的创建改变为提取一张图片,然后在图片上进行标记或者绘图

比如:

import cv2
import numpy as np
img = cv2.imread("D:/ppq")
img = cv2.resize(img,(700,700))
cv2.rectangle(img,(400,100),(600,300),(255,0,255),3)#(左上顶点坐标,右下顶点坐标,R G B,粗细)
cv2.circle(img,(150,300),100,(0,0,0),3)#(圆心坐标,半径,R G B,粗细)
cv2.ellipse(img,(200,200),(100,50),0,0,360,(0,0,255),-1)
cv2.imshow('ppq',img)
cv2.waitKey()

 (不小心就把我龙队帅气的脸庞遮住了0.0)

最后,本人能力有限,只懂得这些,我会继续努力的!

猜你喜欢

转载自blog.csdn.net/qq_62202765/article/details/121610433
今日推荐