Opencv的基本使用
基本操作
1. 安装Opencv
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python
2. 打开图片操作
import cv2
img = cv2.imread(".pytest_cache\sources\lena.jpg")
cv2.imshow("output", img)
cv2.waitKey(0)
3. 打开视频操作
import cv2
cap = cv2.VideoCapture(".pytest_cache\sources\test_video.mp4")
while True:
success, img = cap.read()
if success:
cv2.imshow("Video", img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
cv2.destroyAllWindows()
break
4. 打开摄像头操作
import cv2
cap = cv2.VideoCapture(0)#如果有一个摄像头就用0,大于一个用1或者其他数字
cap.set(3, 640)#设置长度,序号是3
cap.set(4, 480)#设置宽度,序号是4
cap.set(10, 200)#设置亮度,序号是10
while True:
success, img = cap.read()
if success:
cv2.imshow("Video", img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
cv2.destroyAllWindows()
break
基本函数
1. 灰度函数
# 灰度函数
import cv2
img = cv2.imread(".pytest_cache\sources\lena.jpg")
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("output", imgGray)
cv2.waitKey(0)
2. 模糊函数
# 模糊函数
import cv2
img = cv2.imread(".pytest_cache\sources\lena.jpg")
imgBlur = cv2.GaussianBlur(imgGray, (7, 7), 0)#(7,7)必须是奇数对
cv2.imshow("output", imgBlur)
cv2.waitKey(0)
3. 边缘检测函数(canny)
import cv2
img = cv2.imread(".pytest_cache\sources\lena.jpg")
imgCanny=cv2.Canny(img,150,200)
cv2.imshow("output",imgCanny)
4. 膨胀函数(dilate)
#dialate
import cv2
import numpy as np
kernel = np.ones((5, 5), np.uint8)
imgDialation = cv2.dilate(imgCanny, kernel, iterations=1)
cv2.imshow("dialational img",imgDialation)
5. 侵蚀函数(erode)
import cv2
import numpy as np
kernel = np.ones((5, 5), np.uint8)
imgerode = cv2.erode(imgCanny, kernel, iterations=1)
cv2.imshow("erodional img",imgerode)
图片操作
1. 查看图片尺寸和修改尺寸
#python的坐标左上角是原点,向下是y,向右是x。
import cv2
img = cv2.imread(".pytest_cache\sources\lena.jpg")
print(img.shape)
imgResize = cv2.resize(img, (300, 200))#(宽度,高度)
cv2.imshow("imgresize", imgResize)
cv2.waitKey(0)
2.裁剪图片
import cv2
img = cv2.imread(".pytest_cache\sources\lena.jpg")
print(img.shape)
imgcropped = img[0:200, 200:500]#(高,宽)
cv2.imshow("imgresize", imgcropped)
cv2.waitKey(0)
3.设置背景图
import cv2
import numpy as np
img = np.zeros((512, 512,3), np.uint8)#全是0时候是黑色的颜色,
#此处像素点是512x512,并且3表示bgr颜色维度(在opencv中三原色是bgr)
cv2.imshow("Image", img)
cv2.waitKey(0)
4.填充颜色
import cv2
import numpy as np
img = np.zeros((512, 512, 3), np.uint8)
img[100:200, 100:200] = 255, 0,0
cv2.imshow("Image", img)
cv2.waitKey(0)
5.绘画直线
import cv2
img = np.zeros((512, 512, 3), np.uint8)
cv2.line(img, (0, 0), (300, 300), (0, 255, 0), 3)
#(图像,起点,终点,颜色,厚度)
cv2.imshow("Image", img)
cv2.waitKey(0)
6.绘画矩形
import cv2
img = np.zeros((512, 512, 3), np.uint8)
cv2.rectangle(img, (0, 0), (200, 200), (0, 0, 255), cv2.FILLED)
cv2.imshow("Image", img)
cv2.waitKey(0)
7.绘制圆形
import cv2
img = np.zeros((512, 512, 3), np.uint8)
cv2.circle(img, (400,50),30, (0, 0, 255), cv2.FILLED)
cv2.imshow("Image", img)
cv2.waitKey(0)
8.添加文本
import cv2
img = np.zeros((512, 512, 3), np.uint8)
cv2.putText(img, "OPENCV", (300, 200),
cv2.FONT_HERSHEY_COMPLEX, 2, (0, 150, 0), 1)
#(图像,内容,坐标,字体,字大小,颜色,厚度)
cv2.imshow("Image", img)
cv2.waitKey(0)
9.提取图片内容
import cv2
import numpy as np
img=cv2.imread("图片地址")
width,height=250,350
pts1=np.float32([],[],[],[])#所需要图片的位置左上,右上,左下,右下
pst2=np.float32([],[],[],[])#转换图片之后的位置,同上
matrix=cv2.getPerspectiveTransform(pts1,pts2)
imgoutput=cv2.warPerspectivve(img,matrix,(width,height))
cv2.imshow("imgoutput", imgoutput)
cv2.waitKey(0)
多张图片同时操作
import cv2
import numpy as np
img = cv2.imread(".pytest_cache\sources\lena.jpg")
imgHor=np.hstack((img,img))#水平合并
imgVer=np.vstack((img,img))#垂直合并0
cv2.imshow("output", imgHor)
cv2.imshow("output", imgVer)
cv2.waitKey(0)