找兼职做网站的哪里找,网站建设三网合一是什么,东莞技术网站建设,淮南网格员招聘简介 OpenCV是一个流行的开源计算机视觉库#xff0c;由英特尔公司发起发展。它提供了超过2500个优化算法和许多工具包#xff0c;可用于灰度、彩色、深度、基于特征和运动跟踪等的图像处理和计算机视觉应用。OpenCV主要使用C语言编写#xff0c;同时也支持Python、Java、C等… 简介 OpenCV是一个流行的开源计算机视觉库由英特尔公司发起发展。它提供了超过2500个优化算法和许多工具包可用于灰度、彩色、深度、基于特征和运动跟踪等的图像处理和计算机视觉应用。OpenCV主要使用C语言编写同时也支持Python、Java、C等语言。由于其开源和广泛使用的特点在计算机视觉和机器学习领域得到了广泛的应用。 1.计算机眼中的图像 RGB图像是一种由红色R、绿色G和蓝色B三个颜色通道组成的彩色图像。每个像素点都有三个数值分别代表其在红色、绿色和蓝色通道中的亮度。每个数的取值为(0-255三个不同的值组合就形成一个像素点。
这三个通道共同组成了RGB图像它们的组合形成了每个像素点的颜色。通过调整每个通道的亮度和色彩分布可以改变图像的颜色和外观。
import cv2
import numpy as np# 读取图片
image cv2.imread(image/1.jpg)
# 打印图片的形状即高宽和通道数
h, w, c image.shape
print(h, w, c)# 打印60,60的像素点的rgb值
pixel image[60, 60]
print(pixel)# 创建一个空数组和图像格式大小相同
pixels np.zeros((h, w, c), dtypenp.uint8)
# 遍历每个像素点
for y in range(h):for x in range(w):# 获取像素点的数值pixel image[y, x]# 将像素点的数值存储到新数组中pixels[y, x] pixel# 输出结果
print(pixels) 打印结果如下所示这就是一张的图片在计算机眼中的结构实操过程中可以采用断点方式依次打印。 当然以上是为了更好的看清图片的本质我们可以直接用数组完成上述的操作
import cv2
import numpy as np# 读取图片
image cv2.imread(image.jpg)# 将图像转换为NumPy数组
pixels np.array(image)# 输出结果
print(pixels) 2.图片的读取、显示与保存
import cv2# 读取图片并转为灰度图
# image cv2.imread(image/1.jpg)
image cv2.imread(image/1.jpg, cv2.IMREAD_GRAYSCALE)
# 显示图片窗口并命名为 IMG
cv2.imshow(IMG, image)# 保存到image路径下并命名为jujingyi
cv2.imwrite(image/jujingyi.jpg, image)
# 等待键盘输入参数为0表示一直等待直到按下任意键
cv2.waitKey(0)# 关闭所有打开的窗口
cv2.destroyAllWindows() cv2.imread函数用来读取图片 cv2.imwrite函数用来保存图片 cv2.waitKey(0) 0表示按任意键停止1000表示1000毫秒后关闭窗口 3.视频的读取与显示
import cv2cap cv2.VideoCapture(0)while True:success, image cap.read()cv2.imshow(IMG, image)# 等待1毫秒检测键盘输入if cv2.waitKey(1) 0xFF ord(q):break# 循环结束后释放摄像头资源和关闭窗口
cap.release()
cv2.destroyAllWindows()
cv2.VideoCapture(0) 设为0 表示使用电脑自带的摄像头使用外设的话选择1或者2具体查看你的外设摄像头在电脑中的编号。你也可以输入视频地址来读取指定视频。
使用while循环来遍历摄像头读取的每一帧图片并存入image中。
我们使用了 cv2.waitKey(1) 函数等待1毫秒并检测键盘输入。使用位运算符 和函数 ord() 将键盘输入的字符与 ASCII 码中字符 q即按下 q 键进行比较。如果相等则通过 break 语句退出循环。
当退出循环后我们需要释放摄像头资源和关闭窗口。使用 cap.release() 释放摄像头资源然后调用 cv2.destroyAllWindows() 关闭显示窗口。
这样当按下键盘上的 q 键时程序会退出循环并释放摄像头资源和关闭窗口。
如果我们希望保存我们摄像头记录的图片
import cv2cap cv2.VideoCapture(0)# 设置保存视频的参数
save_width int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
save_height int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fourcc cv2.VideoWriter_fourcc(*XVID)
out cv2.VideoWriter(output.avi, fourcc, 20.0, (save_width, save_height))while True:success, image cap.read()cv2.imshow(IMG, image)# 保存每一帧图像到视频文件out.write(image)if cv2.waitKey(1) 0xFF ord(q):breakcap.release()
out.release()
cv2.destroyAllWindows()
我们根据摄像头的参数设置视频保存的相关参数保存的视频宽度和高度与摄像头的参数相同使用四字符码fourcc定义视频编解码器为XVID帧率设定为20.0并指定保存的视频尺寸。
在进入循环之前我们使用cv2.VideoWriter()函数创建一个用于保存视频的对象。其中第一个参数是保存的视频文件名第二个参数是指定视频编解码器第三个参数是帧率第四个参数是保存的视频尺寸。
在循环中每一帧图像都会被保存到视频文件中通过out.write(image)实现。
最后在退出循环后我们需要释放摄像头资源和关闭视频对象。使用cap.release()释放摄像头资源out.release()关闭视频对象。
这样当按下键盘上的 q 键时程序会退出循环并保存摄像头读取的数据为视频文件 output.avi。 其中 cv2.VideoWriter()函数用于创建一个用于保存视频的对象。它的参数解释如下 filename: 保存的视频文件名。 这里的 output.avi 是保存视频的文件名可以根据需要自行更改。 fourcc: 视频编解码器。 fourcc 是一个四字符码用于指定视频的编解码器。常见的四字符码包括 MP4V、XVID、MJPG等可以根据需要选择。在示例代码中我们使用了 *XVID 表示使用 XVID 编解码器。 fps: 帧率Frames per Second。 fps 表示保存视频时的帧率即每秒播放的帧数。在示例代码中我们将帧率设定为20.0可以根据需要进行调整。 frameSize: 视频尺寸。 frameSize 是保存视频时的尺寸即每一帧图像的大小。在示例代码中我们将尺寸设置为(save_width, save_height)其中 save_width 和 save_height 是根据摄像头的参数获得的宽度和高度 如果你想保存为MP4格式的视频文件你可以修改fourcc参数为适合MP4格式的编解码器
fourcc cv2.VideoWriter_fourcc(*mp4v)
out cv2.VideoWriter(output.mp4, fourcc, 20.0, (save_width, save_height)) 在上述代码中我们使用了*mp4v作为fourcc参数表示使用MP4编解码器。同时将保存的文件名改为 output.mp4。
这样修改后摄像头读取的数据将以MP4格式进行保存。请确保你的OpenCV版本支持该编解码器否则可能会出现错误。