Python基础--opencv入门1

opencv是一个开源计算机视觉库,安装非常简单,WIN+R启动cmd后直接使用pip安装,我用的是python3.6

pip install opencv-python

最近在忙于某个比赛项目中,需要用到图像识别,首先想到的就是使用python。python的特点我就不说了,主要是考虑到其的简洁和庞大的第三方库。

这是opencv的文档:https://opencv.org

1.打开摄像头拍下我们的帅照:

import cv2   #导入opencv库
cap=cv2.VideoCapture(0)  #打开电脑的摄像头
i=50
while i:
    ret,frame=cap.read()  #读取一帧
    cv2.imwrite("image.jpg",frame)  #写进文件
    cv2.imshow("image",frame)   #显示写进文件的帧
    cv2.waitKey(1)  #等待
    i-=1
cap.release()  #释放摄像头

这就是opencv调用自己的电脑摄像头,如果用USB连接的外部摄像头可以把摄像头的语句变为:

cap=cv2.VideoCapture(1)

2.简单处理图片

这里我从网上直接搜索得到的苹果图片,把图片读进去后做简单的处理,最后用一个圆把苹果圈出来。

import cv2
import numpy as np

img=cv2.imread("test.jpg")  #读取图片
cv2.imshow("test",img)     #显示图片
#BGR
upper=np.array([124,255,255])  #BGR上限
lower=np.array([20,20,100])    #BGR下限

cv2.waitKey(0)  #一直等待

在这里要注意一下,在opencv中,并不是颜色不是RGB顺序的,而是BGR。

src=cv2.inRange(img,lower,upper)  #在图片中找到介于lower和upper的像素点
cv2.imshow("src",src)

这里是:lower<(BGR)<upper

找出轮廓:

#列表中第二个元素是所有轮廓
contours=cv2.findContours(src,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[1] 

#在原图上画出轮廓
cv2.drawContours(img,contours,-1,(255,0,0),3)
cv2.imshow("test",img)   

找到最大的轮廓,然后画出内接圆:

#找到最大的轮廓
cnt=max(contours,key=cv2.contourArea)
#返回圆心,和半径
((x,y),radius)=cv2.minEnclosingCircle(cnt)
#画出圆
cv2.circle(img,(int(x),int(y)),int(radius),(0,255,0),2)
cv2.imshow("test",img)

猜你喜欢

转载自blog.csdn.net/weixin_40850689/article/details/85946818