arm linux 平台 打开摄像头矫正

安装v4l

v4l 意思为 video for Linux, 是linux驱动链接摄像头的软件应用部分,当然先要安装好v4l-utils

$  sudo  apt  install  -y  v4l-utils
$  v4l2-ctl  --list-devices
$  v4l2-ctl  -d 0 --list-formats-ext

看完以后基础信息以后就可以使用jetson等主板工具打开查看
nvgstcapture

使用gstreamer 工具
gst-launch-1.0 nvarguscamerasrc ! nvegltransform ! nveglglessink

下面是用python基础代码来打开

使用海康大华等的摄像头一般使用rtsp协议,也可以使用gb28181 来被动接收流,如果有mipi,usb摄像头都比较类似,我们写一些测试程序,这些都比较简单,不做阐述,仅仅提供代码就行了

def open_cam_rtsp(uri, width, height, latency):gst_str = ("rtspsrc location={} latency={} ! rtph264depay ! h264parse ! omxh264dec ! ""nvvidconv ! video/x-raw, width=(int){}, height=(int){}, format=(string)BGRx ! ""videoconvert ! appsink").format(uri, latency, width, height)return cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER)def open_cam_usb(dev, width, height):# We want to set width and height here, otherwise we could just do:#     return cv2.VideoCapture(dev)gst_str = ("v4l2src device=/dev/video{} ! ""video/x-raw, width=(int){}, height=(int){}, format=(string)RGB ! ""videoconvert ! appsink").format(dev, width, height)return cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER)def open_cam_onboard(width, height):# On versions of L4T previous to L4T 28.1, flip-method=2# Use Jetson onboard cameragst_str = ("nvcamerasrc ! ""video/x-raw(memory:NVMM), width=(int)2592, height=(int)1458, format=(string)I420, framerate=(fraction)30/1 ! ""nvvidconv ! video/x-raw, width=(int){}, height=(int){}, format=(string)BGRx ! ""videoconvert ! appsink").format(width, height)return cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER)def open_cam_onboard(width ,height)
# 上面代码类似使用
nvarguscamerasrc ! nvegltransform ! nveglglessink

打开摄像头矫正

先要做测试, 把图像存到一个文件夹下面,然后再继续,自动识别文件夹下所有jpg和png文件,然后再使用KD参数矫正摄像头,将所有文件矫正看是否大部分都正常, 也就反向看KD参数时候合适,如何不合适,则是要修改参数。如果成功了,再使用c++,编写代码,这样比较快速,所以说,python真是一个优秀的工具

import os
import rejustbase
import argparse
import cv2
import numpy as np
folder0 = 'd:/img/'def process(folder_path,K,D,DIM,scale):if folder_path and len(folder_path)>0:folder = folder_pathelse:folder = folder0for filename in os.listdir(folder):if filename.endswith('.jpg') or filename.endswith('.png'):image_path = os.path.join(folder, filename)filename = image_path.split('/')[-1]filename0 = filename.split(".")[0]filename1 = filename.split(".")[1]filenameout = filename0+"_rect" + "." + filename1;image_path_out = os.path.join(folder, filenameout)img = cv2.imread(image_path)#img01 = cv2.resize(img01,(1920,1080),cv2.INTER_LINEAR)img1 = rejustbase.undistort1(img,K,D,DIM,scale)print(image_path_out)cv2.imwrite(image_path_out,img1)if __name__ == "__main__":parser = argparse.ArgumentParser()parser.add_argument('--id', type=int, default=0)parser.add_argument('--folder', type=str, default = None)#parser.add_argument('--name2', type=str, default = None)args = parser.parse_args()#   file_path = "c:/abc/abc.png";#   filename = file_path.split('/')[-1]
#   filename0 = filename.split(".")[0]
#   print(filename)
#   print(filename0)
#   print(args.id)
#   print(args.folder)DIM=(1920,1080)Kf = np.loadtxt("C:/QiNa/camerax1920_K.txt",delimiter=" ")Df = np.loadtxt("C:/QiNa/camerax1920_D.txt",delimiter=" ")K4 = np.loadtxt("C:/QiNa/camera4_K.txt",delimiter=" ")D4 = np.loadtxt("C:/QiNa/camera4_D.txt",delimiter=" ")K8 = np.loadtxt("C:/QiNa/camera2.8_K.txt",delimiter=" ")D8 = np.loadtxt("C:/QiNa/camera2.8_D.txt",delimiter=" ")process("",Kf,Df,DIM,0.8)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/194890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode1094. 拼车

Every day a Leetcode 题目来源:1094. 拼车 解法1:差分数组 对于本题,设 a[i] 表示车行驶到位置 i 时车上的人数。我们需要判断是否所有 a[i] 都不超过 capacity。 trips[i] 相当于把 a 中下标从 fromi 到 toi−1 的数都增加 numPassenge…

【Unity动画】什么是动画蒙版(Avatar Mask)

Avatar Mask(骨骼蒙版)是Unity中用于限制动画系统作用范围的一种机制。它允许你选择性地启用或禁用动画系统对模型骨骼的影响,从而实现更精细的动画控制。 以下是Avatar Mask的一些关键概念: 骨骼蒙版(Bone Mask&…

【ArcGIS Pro微课1000例】0045:深度学习--车牌模糊

借助ArcGIS Pro提供的车牌模糊训练模型,可以很方便实现车牌模糊。 文章目录 一、车牌模糊对比二、工具介绍三、案例实现一、车牌模糊对比 车牌模糊前: 车牌模糊后: 二、工具介绍 本功能使用的依然是ArcGIS Pro提供的深度学习工具中的使用深度学习分类像素(Classify Pixel…

JavaScript基础知识20——循环结构:退出循环

哈喽,大家好,我是雷工! 最近一段时间没学习JavaScript,今天看数字孪生的资料,发现很多低代码开发还是得必须熟悉JavaScript才行,为了以后方便搞数字孪生,有时间还是继续学习下JavaScript。 以下…

前端使用 xlsx.js 工具读取 excel 遇到时间日期少 43 秒的解决办法

在使用 xlsx 读取 excel 的时间格式的数据时,如 ‘2023-11-30’,‘2023/11/30’ ,默认会读取一串数字字符串,如:‘45260’,此时需要在 read 的时候传入一个配置项: import { read } from xlsxc…

如何开启Windows Server 2016 远端桌面

使用GUI 设定 服务器管理器–> 本地服务器–> 远端桌面 启用远端桌面 远端–> 允许远端连线至此电脑 会提示防火墙设定跟电源设定 防火墙之前已经关闭了 完成

Kubernetes v1.28.4 安装笔记

安装 kubelet kubeadm kubectl K8s 集群的每个 node 上都要安装的 官方文档参考: https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl 配置 containerd (容器运…

matlab 多目标粒子群优化算法MOPSO

1、内容简介 略 21-可以交流、咨询、答疑 多目标、粒子群 2、内容说明 多目标粒子群优化算法MOPSO 3、仿真分析 略 %% Problem Definition TestProblem3; % Set to 1, 2, or 3 switch TestProblem case 1 CostFunction(x) MyCost1(x); nVar5; …

android 13.0 framework禁用系统所有通知

1.概述 在13.0的系统rom产品开发中最近公司项目要求 禁用系统所有通知 不需要在下拉状态栏显示通知功能实现 要控制系统通知的开关功能,需要屏蔽系统通知,而系统通知都是由NoticationManagerServices.java来管理的, 这个NMS服务管理通知就需要在NotificationManagerService.…

数据库管理-第120期 初探Halo数据库(202301201)

数据库管理-第120期 初探Halo数据库(202301201) 12月份正好也是第120期,新的一篇文章,尝试一条新的路线。其实吧,Halo(羲和)这个数据库我较早时间就听说过(早于今年DTCC&#xff0c…

时序预测 | Python实现LSTM长短期记忆神经网络时间序列预测(多图,多指标)

时序预测 | Python实现LSTM长短期记忆神经网络时间序列预测(多图,多指标) 目录 时序预测 | Python实现LSTM长短期记忆神经网络时间序列预测(多图,多指标)预测效果基本介绍环境准备程序设计参考资料预测效果 基本介绍 LSTM是一种递归神经网络(RNN)的变体

HCIP —— OSPF 综合实验

实验拓扑: 实验要求: 1,R4为ISP,其上只能配置IP地址;R4与其他所有直连设备间均使用公有IP 2,R3-R5/6/7为MGRE环境,R3为中心站点; 3,整个OSPF环境IP基于172.16.0.0/16划分…

如何从 Jira 成功迁移到极狐GitLab,看这个就够了!

内容来源:https://about.gitlab.com/blog 作者:Melissa Ushakov Atlassian 之前表示,到 2024 年 2 月会全面终止对于其服务器端产品的支持。 随着 Jira Server 的生命周期即将结束,众多组织都在考虑将其敏捷项目管理工具从Jira 迁…

van-list的onload事件多次触发的问题

一、问题描述 如图所示,页面刷新的时候,调了3次接口(总共27条数据,我分页10条),一直莫名奇妙的 我期望是默认加载第一页,然后我上拉的时候再push第二页的数据 二、解决方法 还是要多看文档 1…

彻底解决ModuleNotFoundError: No module named ‘exceptions‘【Bug完美解决】

文章目录 项目场景:问题描述原因分析:解决方案:此Bug解决方案总结心得项目场景: 根据本文可找到bug原因并彻底解决**ModuleNotFoundError: No module named ‘exceptions‘**Bug 报错: E:\Anconda\python.exe c:\Users\24190\PycharmProjects\pythonProject4py尝试 gong…

RK3568平台开发系列讲解(Linux系统篇) dtb 到 device_node 的转化

🚀返回专栏总目录 文章目录 一、dtb 展开流程二、dtb 解析过程源码分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过设备树 dtb 如何展开成 device_node 一、dtb 展开流程 设备树源文件编写: 根据设备树的基本语法和相关知识编写符合规范的设备树。…

c# OpenCV 读取、显示和写入图像(二)

读取、显示和写入图像是图像处理和计算机视觉的基础。即使在裁剪、调整大小、旋转或应用不同的滤镜来处理图像时,您也需要先读取图像。因此,掌握这些基本操作非常重要。 imread()读取图像imshow()在窗口中显示图像imwrite()将图像保存到文件目录里 我们…

YOLOV7改进:在C5模块不同位置添加SegNext_Attention

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 3.涨点效果:SegNext_Attention注意力机制,实现…

CCF-走迷宫(bfs)

Description 一个迷宫由R行C列&#xff08;1<R&#xff0c;C < 40)格子组成&#xff0c;有的格子里有障碍物&#xff0c;不能走&#xff0c;用‘#’表示&#xff0c;&#xff1b;有的格子是空地&#xff0c;可以走&#xff0c;用‘.’表示。迷宫左上角和右下角都是.。 给…

毕业论文管理系统的设计与实现

摘要 毕业论文工作是高等学校本科培养阶段的一个重要环节。目前论文管理工作存在着许多问题,例如人工管理极为不便;学生对论文所要撰写的内容并不十分了解,与指导老师的沟通非常不便;老师的指导监督也很难完全到位;手工评审的效率低等。而现有的一些毕业论文信息管理或答辩评审…