python opencv中没有CV_CAP_PROP_FRAME_HEIGHT

时间: 2023-09-04 12:10:49 浏览: 49
在最新版本的 OpenCV 中,`CV_CAP_PROP_FRAME_HEIGHT`已经被替换成了`CAP_PROP_FRAME_HEIGHT`。建议使用最新版本的 OpenCV,并使用`CAP_PROP_FRAME_HEIGHT`来获取视频帧的高度。以下是示例代码: ```python import cv2 cap = cv2.VideoCapture('video.mp4') # 获取视频帧的宽度和高度 frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) print('视频帧的宽度:', frame_width) print('视频帧的高度:', frame_height) ```
相关问题

python opencv双目测距_OpenCV实现双目测距

双目测距是计算机视觉中一种常见的测距方法,通过两个摄像头或双目摄像头拍摄同一场景的两个不同视角的图像,计算两个视角之间的视差,从而得到场景中物体的距离。 在 Python 中,我们可以使用 OpenCV 库来实现双目测距。以下是一个简单的 OpenCV 双目测距代码示例: ```python import cv2 import numpy as np # 设置摄像头参数 cap_left = cv2.VideoCapture(1) cap_left.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap_left.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) cap_right = cv2.VideoCapture(2) cap_right.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap_right.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # 设置相机标定参数 K1 = np.array([[ 701.9780, 0, 324.4757], [ 0, 701.9780, 239.6201], [ 0, 0, 1.0000]]) K2 = np.array([[ 701.9780, 0, 303.5129], [ 0, 701.9780, 239.6201], [ 0, 0, 1.0000]]) D1 = np.array([[-0.0353, 0.0716, -0.0008, -0.0007, -0.0203]]) D2 = np.array([[-0.0375, 0.0716, -0.0019, -0.0009, -0.0213]]) R = np.array([[ 0.9993, -0.0056, -0.0373], [ 0.0058, 1.0000, 0.0044], [ 0.0373, -0.0046, 0.9993]]) T = np.array([[-76.7514], [ 0.5991], [ 0.0321]]) # 创建立体校正映射表 size = (640, 480) R1, R2, P1, P2, Q, _, _ = cv2.stereoRectify(K1, D1, K2, D2, size, R, T) map1x, map1y = cv2.initUndistortRectifyMap(K1, D1, R1, P1, size, cv2.CV_32FC1) map2x, map2y = cv2.initUndistortRectifyMap(K2, D2, R2, P2, size, cv2.CV_32FC1) while True: # 读取图像 ret1, img_left = cap_left.read() ret2, img_right = cap_right.read() if not ret1 or not ret2: break # 校正图像 img_left_remap = cv2.remap(img_left, map1x, map1y, cv2.INTER_LINEAR) img_right_remap = cv2.remap(img_right, map2x, map2y, cv2.INTER_LINEAR) # 计算视差图 stereo = cv2.StereoSGBM_create(minDisparity=0, numDisparities=16, blockSize=5, P1=8*3*5**2, P2=32*3*5**2, disp12MaxDiff=1, uniquenessRatio=10, speckleWindowSize=100, speckleRange=32) gray_left = cv2.cvtColor(img_left_remap, cv2.COLOR_BGR2GRAY) gray_right = cv2.cvtColor(img_right_remap, cv2.COLOR_BGR2GRAY) disp = stereo.compute(gray_left, gray_right).astype(np.float32) / 16.0 # 转换为深度图 f = 701.9780 # 焦距 b = 76.7514 # 双目基线 depth = f * b / disp # 显示深度图 depth_norm = cv2.normalize(depth, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8UC1) cv2.imshow("depth", depth_norm) # 等待按键 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放资源 cap_left.release() cap_right.release() cv2.destroyAllWindows() ``` 在这个代码示例中,我们首先使用 `cv2.VideoCapture` 函数设置两个相机的参数,并读取左右两个相机的图像。然后,我们设置相机标定参数,通过 `cv2.stereoRectify` 函数生成立体校正映射表,使用 `cv2.remap` 函数对左右两个相机的图像进行校正。接着,我们使用 `cv2.StereoSGBM_create` 函数计算视差图,并将视差图转换为深度图。最后,我们使用 `cv2.imshow` 函数显示深度图,等待用户按下 'q' 键退出程序。 需要注意的是,本示例代码中的相机标定参数和立体校正参数都需要根据实际情况进行调整。同时,我们使用了 SGBM 算法进行视差计算,也可以使用其他算法,如 BM 算法或 Belief Propagation 算法。

python视频处理代码_Python+Opencv图像和视频加密的代码实现

以下是一个简单的使用Python和OpenCV实现图像和视频加密的示例代码: ```python import cv2 import numpy as np def encrypt(img_path, key): # 读取图像 img = cv2.imread(img_path) # 将图像转换为灰度图 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 获取图像的宽度和高度 height, width = gray.shape # 生成随机数种子 np.random.seed(key) # 生成与图像大小相同的随机数矩阵 rand_matrix = np.random.randint(0, 256, (height, width)) # 对图像进行异或运算 encrypted_img = cv2.bitwise_xor(gray, rand_matrix) # 返回加密后的图像 return encrypted_img def decrypt(encrypted_img, key): # 获取图像的宽度和高度 height, width = encrypted_img.shape # 生成随机数种子 np.random.seed(key) # 生成与图像大小相同的随机数矩阵 rand_matrix = np.random.randint(0, 256, (height, width)) # 对加密图像进行异或运算 decrypted_img = cv2.bitwise_xor(encrypted_img, rand_matrix) # 返回解密后的图像 return decrypted_img def encrypt_video(video_path, key): # 读取视频 cap = cv2.VideoCapture(video_path) # 获取视频的帧率、宽度和高度 fps = int(cap.get(cv2.CAP_PROP_FPS)) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 创建VideoWriter对象,用于写入加密后的视频 fourcc = cv2.VideoWriter_fourcc(*'mp4v') encrypted_video = cv2.VideoWriter('encrypted_video.mp4', fourcc, fps, (width, height), isColor=False) # 读取视频帧并加密 while True: ret, frame = cap.read() if not ret: break # 将图像转换为灰度图 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 加密图像 encrypted_frame = encrypt(gray, key) # 将加密后的帧写入加密视频 encrypted_video.write(encrypted_frame) # 释放资源 cap.release() encrypted_video.release() def decrypt_video(encrypted_video_path, key): # 读取加密视频 cap = cv2.VideoCapture(encrypted_video_path) # 获取加密视频的帧率、宽度和高度 fps = int(cap.get(cv2.CAP_PROP_FPS)) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 创建VideoWriter对象,用于写入解密后的视频 fourcc = cv2.VideoWriter_fourcc(*'mp4v') decrypted_video = cv2.VideoWriter('decrypted_video.mp4', fourcc, fps, (width, height), isColor=False) # 读取加密视频帧并解密 while True: ret, frame = cap.read() if not ret: break # 解密帧 decrypted_frame = decrypt(frame, key) # 将解密后的帧写入解密视频 decrypted_video.write(decrypted_frame) # 释放资源 cap.release() decrypted_video.release() # 测试加密解密图像 encrypted_img = encrypt('test_img.jpg', 123) cv2.imwrite('encrypted_img.jpg', encrypted_img) decrypted_img = decrypt(encrypted_img, 123) cv2.imwrite('decrypted_img.jpg', decrypted_img) # 测试加密解密视频 encrypt_video('test_video.mp4', 123) decrypt_video('encrypted_video.mp4', 123) ``` 该代码中的 `encrypt` 函数和 `decrypt` 函数分别实现了图像的加密和解密操作,使用的加密算法是将图像的每个像素值与一个随机数进行异或运算,随机数矩阵的生成使用了Numpy库中的随机数函数。 `encrypt_video` 函数和 `decrypt_video` 函数分别实现了视频的加密和解密操作,使用的方法是对视频中的每一帧进行加密或解密操作,然后将加密或解密后的帧写入加密或解密视频中。 请注意:该示例代码仅为了演示加密和解密的基本原理,实际应用中需要使用更加复杂的加密算法和密钥管理方法,以确保加密的安全性。

相关推荐

最新推荐

recommend-type

钢桁架结构振动特性渐变分析工具

钢桁架结构振动特性渐变分析工具
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这
recommend-type

解释这行代码 c = ((double)rand() / RAND_MAX) * (a + b - fabs(a - b)) + fabs(a - b);

这行代码的作用是随机生成一个浮点数,范围在 a 和 b 之间(包括 a 和 b)。 其中,`rand()` 函数是 C 语言标准库中的一个函数,用于生成一个伪随机整数。`RAND_MAX` 是一个常量,它表示 `rand()` 函数生成的随机数的最大值。 因此,`(double)rand() / RAND_MAX` 表示生成的随机数在 [0, 1] 之间的浮点数。 然后,将这个随机数乘上 `(a - b) - fabs(a - b)`,再加上 `fabs(a - b)`。 `fabs(a - b)` 是 C 语言标准库中的一个函数,用于计算一个数的绝对值。因此,`fabs(a - b)
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。