网站开发用的软件,wordpress+嗨一下,wordpress 无法添加媒体,做嵌入式开发的公司目录
cv.imread() 读取图像
cv.imshow() 在窗口中显示图像
cv.imwrite() 保存图像
cv.waitKey() 等待任何键盘事件
release() 释放或关闭图像或视频捕获对象
cv.destroyAllWindows() 销毁所有窗口
cv.destroyAllWindow() 销毁某个窗口
cv.VideoCapture() 打开视频流 …目录
cv.imread() 读取图像
cv.imshow() 在窗口中显示图像
cv.imwrite() 保存图像
cv.waitKey() 等待任何键盘事件
release() 释放或关闭图像或视频捕获对象
cv.destroyAllWindows() 销毁所有窗口
cv.destroyAllWindow() 销毁某个窗口
cv.VideoCapture() 打开视频流
isOpened() 判断是否成功打开视频流
cv.VideoWriter_fourcc() 指定视频编解码器
cv.VideoWriter() 保存视频
cv.flip() 翻转图像 本文参考链接所有版本的opencv库讲解都有OpenCV OpenCV-Python 教程
cv.imread() 读取图像
#图像应位于工作目录中或者应提供图像的完整路径
#第一个参数是图片名称或者路径
#第二个参数是图片的读取方式#cv.IMREAD_COLOR 加载彩色图像。图像的任何透明度都将被忽略。它是默认标志。1#cv.IMREAD_GRAYSCALE以灰度模式加载图像0#cv.IMREAD_UNCHANGED 加载图像包括 alpha 通道-1
#注意即使图像路径错误它也不会抛出任何错误但会给您print imgNone# 加载灰度彩色图像
img cv.imreadmessi5.jpg0
cv.imshow() 在窗口中显示图像
#窗口会自动适应图像大小
#第一个参数是一个窗口名称它是一个字符串。第二个论点是我们的形象。您可以根据需要创建任意数量的窗口但使用不同的窗口名称。cv.imshow图像img
cv.imwrite() 保存图像
#第一个参数是文件名
#第二个参数是要保存的图像#将图像以 PNG 格式保存在工作目录中
cv.imwritemessigray.pngimg
cv.waitKey() 等待任何键盘事件
#是一个键盘绑定函数
#以毫秒为单位的时间
#该函数等待任何键盘事件的指定毫秒。如果在这段时间内按任意键程序将继续。如果传递 0它将无限期地等待击键。它还可以设置为检测特定的击键k cv.waitKey(0)# 获取按下了什么键
if k 27: # 等待 ESC 键退出elif k ord(s): # 等待 s 键保存并退出等待x毫秒进行下一步
cv.waitKey(x)
release() 释放或关闭图像或视频捕获对象
#如果你使用cv2.VideoCapture()打开一个视频文件读取其中的帧并在完成后关闭它那么你可以使用cap.release()来释放该对象并关闭视频文件。cap cv.VideoCapture(0)
cap.release()
cv.destroyAllWindows() 销毁所有窗口
#销毁我们创建的所有窗口
cv.destroyAllWindows()
cv.destroyAllWindow() 销毁某个窗口
#销毁具有给定名称的窗口
cv.destroyWindow(窗口名字)
cv.VideoCapture() 打开视频流
#若要捕获视频需要创建 VideoCapture 对象
#其参数可以是设备索引也可以是视频文件的名称
#设备索引只是指定哪个相机的数字。通常会连接一个摄像头就像我的情况一样。所以我只是传递 0或 1。您可以通过传递 1 来选择第二个相机依此类推#获取vtest.avi文件视频流
cap cv.VideoCapture(vtest.avi)#获取摄像头视频流
cap cv.VideoCapture(0)#获取url里的视频流
cap cv.VideoCapture(url)
isOpened() 判断是否成功打开视频流
#用于检查 VideoCapture 对象是否成功打开
#返回一个布尔值如果视频成功打开返回 True否则返回 False。# 打开摄像头
cap cv2.VideoCapture(0) # 检查是否成功打开
if not cap.isOpened(): print(无法打开摄像头) exit()cv.VideoWriter_fourcc() 指定视频编解码器
#指定视频编解码器的函数
#需要四个字符来唯一地标识编解码器
#fourcc cv.VideoWriter_fourcc(*XVID) 这行代码就是创建了一个新的 fourccX、V、I、D 四个字符分别代表了 XVID 编解码器。#X表示使用的编解码器是否支持跨平台。如果该位置的字符是 X则表示编解码器是跨平台的。
#V表示编解码器是否支持视频压缩。如果该位置的字符是 V则表示编解码器支持视频压缩。
#I表示编解码器是否支持图像压缩。如果该位置的字符是 I则表示编解码器支持图像压缩。
#D表示编解码器的名称。在这个例子中D 表示 XVID 编解码器。#通过创建 fourcc我们可以告诉 OpenCV 使用特定的编解码器来写入视频文件。fourcc cv.VideoWriter_fourcc(*XVID)
cv.VideoWriter() 保存视频
#将帧写入视频文件。它需要指定输出视频文件的路径名、编解码器、帧率和每秒写入帧数。#保存步骤#捕获摄像头视频需要创建 VideoCapture 对象
cap cv.VideoCapture(0)#要先定义保存的路径和编解码器
output_path output.mp4
fourcc cv2.VideoWriter_fourcc(*mp4v) # 再创建 VideoWriter 对象
#30.0这是帧率表示每秒要写入视频文件的帧的数量。在这个例子中帧率为30.0意味着每秒将写入30帧。
#(640, 480)这是一个元组表示视频的分辨率。在这个例子中分辨率为640x480意味着视频的宽度为640像素高度为480像素。
out cv2.VideoWriter(output_path, fourcc, 30.0, (640, 480)) #读取想保存的视频
cap cv2.VideoCapture(input.mp4)
while(cap.isOpened()): ret, frame cap.read() #然后判断ret是否读取成功用out.write把frame写入if retTrue: out.write(frame) #最后记得释放内存
out.release()
cap.release()
cv.flip() 翻转图像
#两个参数#一个是需要翻转的图像#另一个是一个整数用于指定翻转的方式。# 0 表示垂直翻转即上下翻转 # 1水平翻转即左右翻转# -1同时进行水平和垂直翻转frame cv.flip(frame, 0)#垂直翻转即上下翻转
np.zeros() 创建一个具有指定形状和数据类型的新数组黑色图片
#所有元素初始化为零#创建一个形状为 (3, 4) 的二维数组
arr np.zeros((3, 4)) #一个形状为 (2, 2) 的二维数组数据类型为 float32
arr np.zeros((2, 2), dtypenp.float32)#一个一维数组长度为 5
arr np.zeros(5) #一个形状为512,512,3的零填充的3通道图像数组
#这个数组将包含512x512像素的图像每个像素有三个颜色通道红色绿色和蓝色。
#np.uint8指定了数组中每个元素的数据类型是无符号8位整数范围从0到255。
#简单来说就是一张黑色图片
img np.zeros512,512,3 np.uint8
cv.line() 画线
#指定图像对象、线条的起始点、结束点、线条颜色、线条宽度#将在图像 img 上从左上角到右下角绘制一条红色的线条线条宽度为5个像素。
#img要绘制线条的图像对象。
#(0,0)线条的起始点即图像的左上角。
#(511,511)线条的结束点即图像的右下角。
#(255,0,0)线条的颜色这里是红色。在BGR颜色空间中红色的分量为255,0,0。
#5线条的宽度这里是5个像素。
img np.zeros512,512,3 np.uint8
cv.line(img,(0,0),(511,511),(255,0,0),5)
cv.circle() 画矩阵
#指定图像对象、矩形的左上角点、右下角点、矩形颜色、矩形线条宽度等参数。#在图像 img 上绘制一个左上角点为 (384,0)、右下角点为 (510,128) 的矩形矩形的颜色为绿色线条宽度为3个像素。最终呈现出的将是一个绿色的矩形框
mg要绘制矩形的图像对象。
(384,0)矩形的左上角点坐标。
(510,128)矩形的右下角点坐标。
(0,255,0)矩形的颜色这里是绿色。在BGR颜色空间中绿色的分量为0,255,0。
3矩形线条的宽度这里是3个像素。cv.rectangle(img,(384,0),(510,128),(0,255,0),3)
cv.rectangle() 画圆形
指定图像对象、圆心坐标、半径、圆形颜色和线条宽度等参数。在图像 img 上绘制一个圆心为 (447,63)、半径为63、颜色为红色的圆形并填充整个圆形。
img要绘制圆形的图像对象。
(447,63)圆心的坐标。
63半径。
(0,0,255)圆形的颜色这里是红色。在BGR颜色空间中红色的分量为0,0,255。
-1线条宽度这里是-1表示填充整个圆形。cv.circle(img,(447,63), 63, (0,0,255), -1)
cv.ellipse() 画椭圆
#绘制一个椭圆形的函数
#函数原型
#cv.ellipse(img, center, axes, angle, startAngle, endAngle, thickness, color[, lineType, shift])img图像
center中心点坐标
axes轴的长度
angle旋转角度
startAngle起始角度
endAngle结束角度
thickness线条的粗细
color线条颜色BGR格式
lineType线条类型例如8、4、CV_AA等
shift点坐标中的小数位数#在图像 img 上绘制一个中心点为 (256,256)、轴的长度为(100,50)、旋转角度为0、起始角度为0、结束角度为180、线条粗细为最大值255、线条类型为默认类型的椭圆形填充整个椭圆。
img要绘制椭圆形的图像对象。
(256,256)椭圆的中心点坐标。
(100,50)椭圆的轴的长度。
0旋转角度。
0起始角度。
180结束角度。
255线条的粗细这里是最大值表示最粗的线条。
-1线条类型这里是-1表示默认线条类型。cv.ellipse(img,(256,256),(100,50),0,0,180,255,-1)cv.polylines() 绘制折线多边形
#指定图像对象、折线的顶点坐标、是否闭合、折线颜色、线条宽度等参数。在图像 img 上绘制一个由顶点坐标数组 pts 定义的黄色闭合折线
将 pts 数组的形状改变为 (-1,1,2) 是为了让每个顶点坐标成为一个单独的子数组符合 cv.polylines() 函数的要求。如果不进行这个变形操作将会出现错误。img要绘制折线的图像对象。
pts包含多个顶点坐标的NumPy数组每个顶点坐标是一个二元组表示x和y坐标。这里通过reshape((-1,1,2))将原始数组变形为符合要求的形状。
True表示折线是闭合的即最后一个顶点和第一个顶点相连。
(0,255,255)折线的颜色这里是黄色。在BGR颜色空间中黄色的分量为0,255,255。pts np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts pts.reshape((-1,1,2))
cv.polylines(img,[pts],True,(0,255,255))如果第三个参数为 False您将得到连接所有点的折线而不是闭合形状。
cv.putText() 加文字
#在图像上添加文字#定义字体类型
font cv.FONT_HERSHEY_SIMPLEX#在图像上添加文字
img你想要添加文字的图像。
OpenCV你想要添加的文字。
(10,500)文字开始的坐标以左上角为原点x坐标为10y坐标为500。
font之前定义的字体。
4字体大小。
(255,255,255)文字颜色这里是白色。
2线条宽度如果为负数则函数会自动设置为0。
cv.LINE_AA线条类型。cv.LINE_AA代表抗锯齿线条类型。cv.putText(img,OpenCV,(10,500), font, 4,(255,255,255),2,cv.LINE_AA)
cv.setMouseCallback() 设置鼠标回调函数
#鼠标回调函数是一个当你点击图像时调用的函数。这个函数可以让你在图像上实现交互例如选择特定的像素或区域或者实现图像标注等功能。#cv2.setMouseCallback(window_name, callback_function)
window_name 是你想要添加鼠标回调的窗口的名称。
callback_function 是你想要在鼠标点击时调用的函数。这个函数应该接受三个参数x坐标y坐标和鼠标事件类型。def mouse_event(event, x, y, flags, param):
event: 这是触发鼠标事件的类型。它可以是以下几种类型之一
cv2.EVENT_MOUSEMOVE: 鼠标移动
cv2.EVENT_LBUTTONDOWN: 鼠标左键按下
cv2.EVENT_RBUTTONDOWN: 鼠标右键按下
cv2.EVENT_MBUTTONDOWN: 鼠标中键按下
cv2.EVENT_LBUTTONUP: 鼠标左键释放
cv2.EVENT_RBUTTONUP: 鼠标右键释放
cv2.EVENT_MBUTTONUP: 鼠标中键释放
cv2.EVENT_LBUTTONDBLCLK: 鼠标左键双击
cv2.EVENT_RBUTTONDBLCLK: 鼠标右键双击
cv2.EVENT_MBUTTONDBLCLK: 鼠标中键双击
cv2.EVENT_FLAGS: 用于检查是否有特殊修饰键如CtrlShift等被按下。
x 和 y: 这两个参数表示鼠标事件发生的坐标。例如如果你点击了图像的某个位置x 和 y 就会是那个位置的坐标。
flags: 这个参数是一个可选参数通常用于检查在鼠标事件发生时是否有任何特殊的修饰键如CtrlShift等被按下。它可以是以下的一些值
cv2.EVENT_FLAG_LBUTTON: 左键被按下或释放。
cv2.EVENT_FLAG_RBUTTON: 右键被按下或释放。
cv2.EVENT_FLAG_MBUTTON: 中键被按下或释放。
cv2.EVENT_FLAG_CTRLKEY: Ctrl键被按下。
cv2.EVENT_FLAG_SHIFTKEY: Shift键被按下。
cv2.EVENT_FLAG_ALTKEY: Alt键被按下。
param: 这个参数是一个可选参数用户可以通过它将额外的数据传递给回调函数。例如你可以将一个图像或一个窗口的引用传递给这个参数然后在回调函数中使用它。在大多数情况下你可能不需要这个参数可以忽略它。#点击窗口然后打印坐标
def mouse_event(event, x, y, flags, param): if event cv2.EVENT_LBUTTONDOWN: print(fYou clicked at {x},{y}) cv2.setMouseCallback(image_window, mouse_event)