手机交互网站,西安网站建设有那些公司好,如何给网站加关键词,哪里有网站建设中心问题和解决方案
今天运行如下代码#xff0c;发生了意外的错误#xff0c;代码如下#xff0c;其中输入的 frame 来自于 OpenCV 开启数据流的读取 cap cv2.VideoCapture(RTSP_URL)
print(链接视频流完成)
while True:ret, frame cap.rea…问题和解决方案
今天运行如下代码发生了意外的错误代码如下其中输入的 frame 来自于 OpenCV 开启数据流的读取 cap cv2.VideoCapture(RTSP_URL)
print(链接视频流完成)
while True:ret, frame cap.read()
def render_result_in_frame(frame, recognize_result: RecognizeResult):# 将 OpenCV 图像转换为 PIL 图像frame_pil Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))draw ImageDraw.Draw(frame_pil)for item in recognize_result:# 绘制矩形框draw.rectangle([(item.x1, item.y1), (item.x2, item.y2)],outline(0, 255, 0),width2)# 绘制中文文本text f姓名: {item.name}draw.text((item.x1, item.y1 - 40),text,fontFONT,fill(0, 255, 0, 0)) # fill 参数是颜色 (R, G, B, A)# 将 PIL 图像转换回 OpenCV 格式frame cv2.cvtColor(np.array(frame_pil), cv2.COLOR_RGB2BGR)return frame
错误信息如下
...(略)person_image_rgb cv2.cvtColor(person_image, cv2.COLOR_BGR2RGB)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function cvtColorOverload resolution failed:- src is not a numpy array, neither a scalar- Expected Ptrcv::UMat for argument src
查了很久也没有查到原因因为这个函数输入是一个 opencv 读取的视频帧忽然想到在安装依赖的时候我先安装了一次 opencv-python 的 4.11.0.86 版本又安装了一次 opencv-python-headless 的 4.7.0 版本这正好和错误信息中的 4.7.0 对应。
随后升级了 opencv-python-headless 的版本问题就被解决了 原因分析
那么首先要搞懂的就是opencv-python 和 opencv-python-headless 的关系是什么呢
查阅了如下资料【完整版】opencv-python-headless、opencv-python和opencv-contrib-python区别和联系发现还有一个 opencv-contrib-python 的版本三者的比较大体如下
opencv-python-headless具备OpenCV核心图像与视频处理功能像图像滤波、视频帧提取等但无GUI功能适合服务器端或无需显示图像的后台数据处理任务opencv-python拥有OpenCV完整核心功能除处理图像视频外还支持GUI能创建窗口显示图像、实现交互适用于本地交互式开发与调试opencv-contrib-python涵盖核心功能及扩展模块提供深度学习、高级特征提取等额外算法适用于科研及需高级功能的开发场景
这三者有一个很坑的地方就是他们都会安装到 cv2 大路径下并且相互有重叠的文件
那么当先安装 opencv-python 后再安装另一个版本的 opencv-python-headless就有可能发生 py 文件的覆盖进而导致接口不兼容的问题
尽量安装单一版本如果非要安装多个版本要保证版本一致
以上只是个人的一些分析如果有分析不正确的地方欢迎在评论区留言