学习python 版本opencv必备的基础代码
- 基础读图灰度化二值化
- python opencv获取图片长宽
- 保存图片
- python批量保存图片
- python从视频中生成图片
- python opencv灰度化、二值化
- python opencv膨胀腐蚀
- 通过打开摄像头捕捉视频 :
- python opencv画矩形
- python opencv裁剪矩形
- opencv_python实现二值图像的孔洞填充
- 通过打开视频文件读取视频:
- python opencv 使用图片生成视频
- Python 用 OpenCV 画点和圆
- Python 用 OpenCV 画矩形框
- 视频的分解:
- opencv python 版本resize函数用法
- 轮廓相关操作,查找,绘制,过滤等
- 轮廓相关面积,周长,重心等
- Python 下opencv 应用: 摄像头参数设置
- python opencv设置摄像头分辨率
- python opencv保存视频为mp4格式
基础读图灰度化二值化
import cv2
import os
# 确认上述地址是否存在
src = cv2.imread('cheese_1.jpg')
cv2.namedWindow("3",0)
cv2.imshow("3", src)
cv2.waitKey(20)
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
cv2.namedWindow("binary",0)
cv2.imshow("binary", gray)
cv2.waitKey(100)
etVal, threshold = cv2.threshold(gray, 125, 255, cv2.THRESH_BINARY)
cv2.namedWindow("threshold",0)
cv2.imshow("threshold", threshold)
cv2.waitKey(0)
python opencv获取图片长宽
[height,width,tongdao]=frame.shape
print(width,height,tongdao)
OpenCV中提供了一个基本的视频操作类VideoCaputre,它是OpenCV用来通过摄像头、视频文件或图像序列来获取及操作视频的类。VideoCaputre有两种读取视频的方法,分别是通过摄像头读取与通过视频文件读取。
保存图片
cv2.imwrite('messigray.png',img)
python批量保存图片
python从视频中生成图片
import cv2
#获取一个视频并打开
cap=cv2.VideoCapture("1.mp4") #打开摄像头并创建摄像头对象
#其中0表示打开内置摄像头,1表示打开外接摄像头
if cap.isOpened(): #VideoCaputre对象是否成功打开
print('已经打开了摄像头捕捉视频')
else:
print('打开摄像头失败')
if cap.isOpened(): #VideoCaputre对象是否成功打开
print('已经打开了视频文件')
fps = cap.get(cv2.CAP_PROP_FPS) # 返回视频的fps--帧率
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) # 返回视频的宽
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) # 返回视频的高
print('fps:', fps,'width:',width,'height:',height)
i=0
while 1:
i = i + 1
ret, frame = cap.read() # 读取一帧视频
frame = cv2.resize(frame, (1920, 1080), interpolation=cv2.INTER_AREA)
cv2.namedWindow("frame",0)
cv2.imshow("frame", frame)
cv2.waitKey(20)
if i%10==0:
file_name = './output/' + "shoushi_"+str(i) + '.jpg'
cv2.imwrite(file_name, frame)
else:
print('视频文件打开失败')
python opencv灰度化、二值化
cv2.imshow("3", img_temp)
cv2.waitKey(20)
gray = cv2.cvtColor(img_temp, cv2.COLOR_BGR2GRAY)
cv2.imshow("binary", gray)
cv2.waitKey(100)
etVal, threshold = cv2.threshold(gray, 125, 255, cv2.THRESH_BINARY)
cv2.imshow("threshold", threshold)
cv2.waitKey(200)
python opencv膨胀腐蚀
#coding=utf-8
import cv2
import numpy as np
img = cv2.imread('D:/binary.bmp',0)
#OpenCV定义的结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 3))
#腐蚀图像
eroded = cv2.erode(img,kernel)
#显示腐蚀后的图像
cv2.imshow("Eroded Image",eroded)
#膨胀图像
dilated = cv2.dilate(img,kernel)
#显示膨胀后的图像
cv2.imshow("Dilated Image",dilated)
#原图像
cv2.imshow("Origin", img)
#NumPy定义的结构元素
NpKernel = np.uint8(np.ones((3,3)))
Nperoded = cv2.erode(img,NpKernel)
#显示腐蚀后的图像
cv2.imshow("Eroded by NumPy kernel",Nperoded)
cv2.waitKey(0)
cv2.destroyAllWindows()
通过打开摄像头捕捉视频 :
import cv2
#获取一个视频并打开
cap=cv2.VideoCapture(0) #打开摄像头并创建摄像头对象
#其中0表示打开内置摄像头,1表示打开外接摄像头
if cap.isOpened(): #VideoCaputre对象是否成功打开
print('已经打开了摄像头捕捉视频')
else:
print('打开摄像头失败')
if cap.isOpened(): #VideoCaputre对象是否成功打开
print('已经打开了视频文件')
fps = cap.get(cv2.CAP_PROP_FPS) # 返回视频的fps--帧率
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) # 返回视频的宽
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) # 返回视频的高
print('fps:', fps,'width:',width,'height:',height)
while 1:
ret, frame = cap.read() # 读取一帧视频
cv2.namedWindow("frame",0)
cv2.imshow("frame", frame)
cv2.waitKey(20)
else:
print('视频文件打开失败')
python opencv画矩形
Tp_x = 0
Tp_y =0
Tp_width = 10
Tp_height = 10
cv2.rectangle(img, (Tp_x, Tp_y), (Tp_x + Tp_width, Tp_y + Tp_height), (0, 0, 255), 1)
python opencv裁剪矩形
Tp_x = 0
Tp_y =0
Tp_width = 10
Tp_height = 10
img_temp=img[Tp_y:Tp_y+Tp_height, Tp_x:Tp_x+Tp_width]#参数含义分别是:y、y+h、x、x+w
opencv_python实现二值图像的孔洞填充
https://blog.csdn/Leon_yy/article/details/81189202
通过打开视频文件读取视频:
import cv2
#获取一个视频并打开
cap=cv2.VideoCapture('1.mp4')
if cap.isOpened(): #VideoCaputre对象是否成功打开
print('已经打开了视频文件')
else:
print('视频文件打开失败')
python opencv 使用图片生成视频
import cv2
import time
videoWriter = cv2.VideoWriter('test_1.avi', cv2.VideoWriter_fourcc(*'MJPG'), 3, (1920, 1080))
# retval = cv.VideoWriter.open(filename, fourcc, fps, frameSize[, isColor])
# - 保存视频为test.avi,可以选择mp4等
# - fps为25,即每秒25张图片
# - 视频尺寸大小为1920,1080
# - isColor可以为true,flase选择是否有颜色
for i in range(0, 5):
# 加载图片,图片更多可以改变上面的10
img = cv2.imread('./image/000' + str(i) + '.png')
img = cv2.resize(img, (1920, 1080))
# 如果每张图片为只显示一下,就用如下代码
# videoWriter.write(img)
# 如下让每张图显示1秒,具体与fps相等
a = 0
while a < 30:
videoWriter.write(img)
a += 1
videoWriter.release()
Python 用 OpenCV 画点和圆
https://blog.csdn/u011520181/article/details/83933325
Python 用 OpenCV 画矩形框
https://blog.csdn/u011520181/article/details/84036425
视频的分解:
视频其实就是由连续的图像画面组成的。当连续的图像变化每秒超过24帧画面以上时,根据视觉暂留原理,人眼就无法识别是否是静态画面了,这样平滑连续的视觉效果看起来就像是视频了。
帧率是以帧称为单位的位图图像连续出现在显示器上的频率,通俗来讲,就是1秒钟的帧(fps),也就是1秒钟展示的图片数量。
import cv2
#获取一个视频并打开
cap=cv2.VideoCapture('1.mp4')
if cap.isOpened(): #VideoCaputre对象是否成功打开
print('已经打开了视频文件')
fps = cap.get(cv2.CAP_PROP_FPS) # 返回视频的fps--帧率
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) # 返回视频的宽
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) # 返回视频的高
print('fps:', fps,'width:',width,'height:',height)
i=0
while 1:
if i==15:
print('保存了视频的前15帧图像,保存结束')
break
else:
i=i+1
ret, frame = cap.read() # 读取一帧视频
# ret 读取了数据就返回True,没有读取数据(已到尾部)就返回False
# frame 返回读取的视频数据--一帧数据
file_name='.\\aa\\img'+str(i)+'.jpg'
cv2.imwrite(file_name, frame)
else:
print('视频文件打开失败')
opencv python 版本resize函数用法
src = cv.imread('C:\\Users\\Administrator\\Desktop\\temp0.jpg')
resized = cv.resize(src, (1280,720), interpolation=cv.INTER_AREA)
轮廓相关操作,查找,绘制,过滤等
https://blog.csdn/iracer/article/details/90695914
轮廓相关面积,周长,重心等
使用Opencv对图像进行边缘轮廓检测,获得轮廓面积、周长等信息(Contour Features)
Python 下opencv 应用: 摄像头参数设置
Python 下opencv 应用: 摄像头参数设置
https://shliang.blog.csdn/article/details/88535234
self.cap = cv2.VideoCapture() # 初始化摄像头
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1080)
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
python opencv设置摄像头分辨率
import cv2
if __name__ == "__main__":
webcam = cv2.VideoCapture(0)
if not webcam.isOpened():
print("can't open the camera!!!")
# cv2.namedWindow("video", 0)
# cv2.resizeWindow("video", 960, 720)
# method 1:
webcam.set(3, 1920) # width=1920
webcam.set(4, 1080) # height=1080
# method 2:
# webcam.set(cv2.CAP_PROP_FRAME_WIDTH, 960)
# webcam.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
while True:
ret, frame = webcam.read()
print(frame.shape[:2]) # just need the first two values.
cv2.imshow("video", frame)
# Hit 'q' on the keyboard to quit!
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Release handle to the webcam
webcam.release()
cv2.destroyAllWindows()
python opencv保存视频为mp4格式
#-------------------------------------#
# 调用摄像头检测
#-------------------------------------#
from keras.layers import Input
from yolo import YOLO
from PIL import Image
import numpy as np
import cv2
import time
SAVE_OUTPUT=1
yolo = YOLO()
# 调用摄像头
#capture=cv2.VideoCapture(0) #
capture=cv2.VideoCapture("C:\\Users\\Administrator\\Videos\\项目\\1_play_card\\VID_20220411_203327.mp4")
#capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
#capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
if SAVE_OUTPUT:
#fourcc = cv2.VideoWriter_fourcc(*'XVID')
#out = cv2.VideoWriter('output_20220411_203327.avi', fourcc, 30.0, (1920, 1080), True)
fourcc = cv2.VideoWriter_fourcc(*'MP4V') # 视频编解码器
fps = capture.get(cv2.CAP_PROP_FPS) # 帧数
width, height = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 宽高
out = cv2.VideoWriter('output_20220411_203327.mp4', fourcc, fps, (width, height)) # 写入视频
fps = 0.0
while(True):
t1 = time.time()
# 读取某一帧
ref,frame=capture.read()
if ref != True:
break
# 格式转变,BGRtoRGB
frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
# 转变成Image
frame = Image.fromarray(np.uint8(frame))
# 进行检测
frame = np.array(yolo.detect_image(frame))
# RGBtoBGR满足opencv显示格式
frame = cv2.cvtColor(frame,cv2.COLOR_RGB2BGR)
fps = ( fps + (1./(time.time()-t1)) ) / 2
print("fps= %.2f"%(fps))
frame = cv2.putText(frame, "fps= %.2f"%(fps), (0, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.namedWindow("video", 0)
cv2.imshow("video",frame)
if SAVE_OUTPUT:
out.write(frame)
c= cv2.waitKey(3) & 0xff
if c==27:
capture.release()
break
if SAVE_OUTPUT:
out.release()
yolo.close_session()
更多推荐
python opencv基础代码
发布评论