摄像机模型建立和手机标定Python实现

这篇具有很好参考价值的文章主要介绍了摄像机模型建立和手机标定Python实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

记录了摄像机模型建立和张正有标定法,并采用python对自己手机的摄像头进行了标定。

计算机视觉之摄像机模型建立和标定(张正友标定法)

1.摄像机模型

1.1小孔成像原理

1.2坐标系

1.3相似三角形原理

1.4像素坐标

1.5齐次坐标

1.6矩阵表示

1.7摄像机内参矩阵

1.8世界坐标

2 张正友标定

2.1摄像机标定

2.2 模型建立

2.3模型求解

2.4 H矩阵求解

2.5精度提高

2.6畸变的处理

2.6.1径向畸变

2.6.2切向畸变

3 手机摄像头标定实现

3.1 棋盘打印

3.2棋盘角点3维空间坐标

3.3棋盘角点2维坐标

3.4摄像机标定

​编辑3.5 去畸变

4 代码


计算机视觉之摄像机模型建立和标定(张正友标定法)

1.摄像机模型

1.1 小孔成像原理

小孔成像的原理:当用一个带有小孔的板遮挡在屏幕与物之间,光线通过小孔后会在胶片上形成物的倒像,这是因为光线直线传播的性质。前后移动中间的板,像的大小也会随之发生变化。        

根据小孔成像原理有:                                    

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

将空间点(x,y,z)投影到照片上的坐标为(x',y')  ,z代表深度        

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

1.2坐标系

 图片坐标系:图片左下角度为原点

摄像机坐标系:针孔为原点

空间坐标系:自己定原点

1.3 相似三角形原理

在摄像机坐标系下根据相似三角形原理,可以列出x,y的两个等式,以y为例

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

     其中  f  代表焦距,[x’,y’]为照片上的坐标单位为(m)

有下面成立,x同理

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

1.4 像素坐标

考虑像平面成像的原点在中心,而像素坐标原点在左下角,因此[x’,y’]应该加上(Cx,Cy)摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

考虑到照片坐标为像素单位,要进行单位变化:米->像素    [u,v]为照片上的像素坐标(单位为像素),k,l为图片坐标系下x和y方向单位转化系数

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

照片上的坐标为摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉 

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

1.5 齐次坐标

        为了将投影关系用矩阵表示,需要引入齐次坐标,根据下面原理,照片坐标可以用摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉 表示,含义与[u,v,1]一样,空间坐标用[x,y,z,1]表示。

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

1.6 矩阵表示

变成其次坐标写成矩阵形式:P'为摄像机的齐次坐标,[x,y,z,1] 为空间点。

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

1.7 摄像机内参矩阵

        由于相机工艺问题,对矩阵引入像素平面夹角

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        给出K为摄像机内参数矩阵,有了K即可算摄像机坐标下的空间点投影到照片上的像素位置(内参矩阵由设备决定,一般厂家会给或自己标定)

        将(,),写在一起,均与设备有关。记内参矩阵K为(5个未知量)

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

1.8世界坐标

        由于拍照位置不固定,往往需要移动,为了建立起多张图片的联系和更好的描述物体,需要引入世界坐标系,其中Pw为世界坐标系的点,P为摄像机坐标系下的点。R为旋转矩阵(3*3),T为平移矩阵(3*1)

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        有前面的p = KP 可以写成 p = K[I 0]P的形式,其中 为3*3的单位矩阵,K为3*3的内参矩阵,0是3*1的向量,带入上面图片的P进去

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        这样我们得到了完整的摄像机模型,记住M=K[R T]为(3*4)的投影矩阵为,K为3*3的内参矩阵,RT构成外参数矩阵,因为R,T是由世界坐标系、拍照位置和摄像机姿态决定,与设备无关。上面的Pp均为齐次坐标。


2 张正友标定

2.1摄像机标定

        什么是摄像机标定?我们为什么需要摄像机标定?
        摄像机标定即求解摄像机内、外参数矩阵的过程,摄像机内、外参数即描述了三维世界到二
维像素的映射关系,是三维建模的基础。
        张正友摄像机标定,又称“张氏标定”,是张正友教授1998年提出的单平面棋盘格的摄像机标定方法。该方法介于传统标定法和自标定法之间,但克服了传统标定法需要的高精度标定物的缺点,而 仅需使用一个打印出来的棋盘格就可以。同时也相对于自标定而言,提高了精度,便于操作。
摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉
        其主要流程包括:
        1.打印一张模板(已知尺寸的棋盘格)并贴在一个平面上;
        2.从不同的角度拍摄若干张模板图像;
        3.检测出图像中的特征点;
        4.求解理想无畸变情况下的摄像机的内参数和外参数,并用极大似然估计提升精度;
        5.用最小二乘法求出实际的径向畸变系数;
        6.综合内参、外参、畸变系数,使用极大似然法,优化估计,提升估计精度。

2.2 模型建立

        由于是把已知尺寸的棋盘格并贴在一个平面上,在平面上建立世界坐标系,减小计算[x,y,z=0]由于棋盘尺寸知道,自己打印,则我们可以计算得到每一个角点在世界坐标系下坐标[Xi,Yi,0]。同时通过一些特征点提取算法,也知道其对应照片坐标[Ui,Vi]。

        我们将利用这些信息:每一个角点的像素坐标 (u,v) 、每一个角点在世界坐标系下的坐标(X,Y,Z=0),来进行相机的标定,获得相机的内外参矩阵K,R,T、畸变参数。

        根据前面的摄像机模型,带入坐标有:

        其中s为比例因子,齐次坐标具有比例不变形。表示世界坐标系到图像坐标系的尺度因子

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        整理z=0有:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

2.3模型求解

        上面等式可以写成 p = HPxy  ,其中H=K[r1,r2,T]/s,把K和s乘进去有H = [Kr1/s,Kr2/s,KT/s] ,记H为:H = [h1,h2,h3]  。 H 为3*3的矩阵,有9个参数,有一个元素作为齐次坐标,即H有8个自由度需要求解,需要四个对应点。也就是需要四个点来求出图像平面到世界平面的单应性矩阵。这里假设对应照片的H已知。

        由于R为旋转矩阵(满足单位正交阵),r1和r2相互垂直,模等于1

结合H =  [Kr1/s,Kr2/s,KT/s] = H = [h1,h2,h3]

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        记:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

带入K如下,其中u,v为主点坐标 ,两坐标轴的垂直度为

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        显然B是一个对称矩阵,其中只有6个未知量(从K看只有5个),将6个未知量表示出来:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        将H矩阵表示如下:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

       我们记vij用h表示

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

         带入上面的h1,h2,h3和B进入下面的公式:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        就可以将上面两个等式写成如下形式,一个点代表一个方程,b有6个未知数,显然只需要3个点就可以得到唯一解

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        或写成下面等式,V为(2*n,6)矩阵n为照片的个数,一个照片对应一个H,n大于等于3就可以得到唯一解b,大于三可以用近似解,令b的模为1。求Vb的模

        摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        求出了b,即求出了B,带入即有:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        为比例因子为1/s

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

2.4 H矩阵求解

        前面假设的H已经知道,H不知道,这里求解。知道一张照片确定一个H,最小需要4个点。H为内参矩阵和外参矩阵的积。记Z为齐次坐标的尺度因子,为定值。

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        利用上u和v算出来,由齐次坐标的的性质消去Z

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        此时,尺度因子Z 已经被消去,因此上式对于同一张图片上所有的角点均成立,像素坐标(u,v)和世界坐标(U,V)已知。(棋盘大小自己决定,在有特征值提取可算,如SIFT算法)。H有9个参数,齐次性去掉一个,剩下8个自由度。当一张图片上的标定板角点数量等于4时,即可求得该图片对应的矩阵。

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        对上面展开有:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

假如我们得到了两幅图片中对应的N个点对(特征点匹配对),那么可以得到如下线性方程组:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        写成矩阵形式:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        由于单应矩阵H包含了齐次性那个自由度,可设||H||=1约束,因此根据上图的线性方程组,8自由度的H我们至少需要4对对应的点才能计算出单应矩阵。这也回答了前面图像校正中提到的为何至少需要4个点对的根本原因在真实的应用场景中,我们计算的点对中都会包含噪声。比如点的位置偏差几个像素,甚至出现特征点对误匹配的现象,如果只使用4个点对来计算单应矩阵,那会出现很大的误差。因此,为了使得计算更精确,一般都会使用远大于4个点对来计算单应矩阵。

        H已知,则可参考2.3求出K矩阵,同时每张图片的R和T也可以求出。K[r1,r2,T] = H。H和K已知,则r1,r2, T知道 ,r3 = r1×r2。即R和T

        从此相机的内参矩阵和外参矩阵均已得到。

2.5精度提高

        基于以上方法的所得结果,需要基于最大似然估计方法进行优化。假定存在于相同模板中n幅图像的m个点均被同样的噪声所破坏,则此时极大似然估计将能求解:表示空间点在对应图片的像素点的实际投影和理论投影之差,应满足最小。

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

2.6畸变的处理

        摄像机模型主要将图像的二维点和场景的三维点进行紧密衔接,但在此之中,针孔成像模型应用范围最为广泛,绝大多数应用技术均基于此模型而建立。前面模型的建立和求解秉持小孔成像原理,完成了摄像头的标定,基于镜头观察到的摄像机图像,视为理想化的针孔图像。然而,由于相机光学系统并未选用这种成像,故而往往存在一定的光学畸变误差。这种误差产生的畸变,通常情况下细分为以下三大类别,径向畸变,偏心畸变(切向),薄棱镜畸变。畸变一般有5个参数

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉
         在上述内容中,并未对镜头畸变问题进行综合考量,但其通常存在,特别是径向畸变。

        径向畸变示意

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        偏心畸变(切向)示意

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

2.6.1径向畸变

        径向畸变的修正参数有k1、k2、k3,具体解释如下:

        在图像处理中,径向畸变的效应有三种,一种是桶形畸变(barrel distortion),另一种是枕形畸变(pincushion distortion),还有一种是两种的结合叫做胡子畸变(mustache distortion)。为了修正这些畸变,可以使用径向畸变修正参数。

        修正参数k1、k2、k3可以由一系列已知点在图像中的实际位置和它们在图像坐标系中的坐标之间的差异得到。这些参数可以用来对图像进行几何校正,使得图像中的点能够更准确地对应到它们在现实世界中的位置。

        如下:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        等式左边为畸变矫正后的归一化图像坐标,右边的(x,y)是理想的无畸变归一化的图像坐标,r为图像像素点到图像中心点的距离。

2.6.2切向畸变

        切向畸变是一种由于摄像机制造缺陷导致的透镜本身与图像平面不平行而产生的畸变,可以定量描述为:

        切向畸变的修正参数包括p1和p2两个参数,这些参数用于描述摄像机制造缺陷导致的透镜本身与图像平面不平行的情况。

        如下:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

        左边的xy是未经修正的图像坐标,即原始坐标系下的坐标,它表示的是摄像机制造缺陷导致的透镜本身与图像平面不平行的情况下的像素位置。

        右边的xy是经过切向畸变修正后的图像坐标,它表示的是修正后的像素位置。通过修正,可以使得图像更加接近理想的投影关系,从而减小切向畸变的影响。

3 手机摄像头标定实现

        前面讲了张正友标定,下面对自己手机的摄像头进行标定。

3.1 棋盘打印

棋盘可以去tb上购买,但只是自己学习,可以自己打印。这里采用wps表格功能,绘制一个7*7的棋盘,通过表格属性设置棋盘长宽相等(边长具体不影响后面标定,这里设置的为1.5cm*1.5cm)。

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

 颜色填充得到棋盘,转成pdf去打印

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

 拿手机对棋盘拍照,注意:不要放大或广视角,保证拍照比例一致。得9张照片:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

3.2棋盘角点3维空间坐标

  现在求(X,Y,Z),将世界坐标系原点设置棋盘内圈的右上角,则坐标为(0,0,0),(1.5,0,0),(3,0,0)....,经验证,棋盘格子尺寸不影响标定。则采用单位坐标,每个内部角点坐标为(0,0,0),(1,0,0),(2,0,0)....,这样一行一行从左到右排下去。

3.3棋盘角点2维坐标

ret,corners = cv2.findChessboardCorners(image,patternSize,flags = None)

 此函数能确定图片是否有棋盘图案,并定位棋盘板上的内角点。如果所有的角点被找到且以一定的顺序排列(一行接一行,从左到右),并返回一个非零值。另外,如果没有找到所有的角点,则返回0。

  • image:输入原始的棋盘板图像。该图像必须是一张8位的灰度图或色彩图。

  • patternSize:(w,h),棋盘上每一排和每一列的内角数。w=棋盘板一行上黑白块的数量-1,h=棋盘板一列上黑白块的数量-1,例如:7x7的棋盘板,则(w,h)=(6,6)

  • flags:int,不同的操作标记,能够为0或者下述值的组合:摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

如果找到返回True和角点在图片上的像素坐标(u,v)

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

画出角点看看,这个函数主要用于在图像上绘制棋盘格的角点:

cv2.drawChessboardCorners(img,checkerboard_size,corners,ret)

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

用matplotlib做散点图

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

为了提高精度对图像中的角点进行亚像素级别的细化,这里可以不采用。

cv2.cornerSubPix(src, window, zeroZone, criteria)

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

3.4摄像机标定

通过上面步骤,我们得到棋盘的空间坐标和对应图像的像素坐标对。我们使用cv2.calibrateCamera()进行标定,这个函数会返回相机的内参数矩阵、畸变系数、旋转矩阵和平移向量。

ret, mtx, dist, rvecs, tvecs =
 cv.calibrateCamera(obj_points,img_points,gray_shape[::-1],None,None)

obj_points:每张图片对应角点的空间坐标,放在一个列表中。

img_points:每张图片对应角点的像素坐标,放在一个列表中。

gray_shape:灰度照片尺寸,所有照片尺寸应该一样。

返回参数:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉3.5 去畸变

得到了相机内参和畸变系数,可以对拍出的照片进行矫正,得到更清晰的图片,但也会剪去一些边界。

使用cv.getOptimalNewCameraMatrix()求得优化后的内参数和畸变系数

再使用cv2.undistort()函数就可以得到去畸变的图像。

4 摄像头标定全部代码

下面是摄像机标定全部代码

import matplotlib.pyplot as plt
import glob
import cv2 as cv
import numpy as np
def calibration(img_path,size,criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER,30, 0.01)):
    """
    对通过照片对摄像机进行标定
    :param img_path:  照片坐标
    :param size: 棋盘尺寸(m横,n竖),数方格大小,尽量用正方形
    :param criteria: 终止条件,迭代次数达到30次或残差的绝对值小于0.001 停止
    :return:
    """
    # 棋盘格内的点阵,外面一圈不算

    checkerboard_size = (size[0]-1,size[1]-1)
    # 生成棋盘格角点真实空间3D坐标,平面3d坐标,只算内点
    object_points = np.zeros((np.prod(checkerboard_size), 3), dtype=np.float32)
    object_points[:, :2] = np.mgrid[0:checkerboard_size[0], 0:checkerboard_size[1]].T.reshape(-1, 2)
    # print(object_points)

    # 用于存储所有图像中的角点坐标
    obj_points = []  # 在真实世界中的3D点
    img_points = []  # 在图像中的2D点
    # 加载所有图像
    gray_shape = []
    images_path = glob.glob(f"{img_path}/*")

    for path in images_path:
        img = cv.imread(path)   # 读取图像并灰度化
        gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
        # 确定图片是否有棋盘,并定位角点 ret :YES ,corners 为角点在图片上的坐标
        ret, corners = cv.findChessboardCorners(gray, checkerboard_size, None)

        gray_shape = gray.shape  # 保留灰度图像大小,所有照片应该一样,别放大拍

        # 画出来角点看看
        # cv.drawChessboardCorners(img,checkerboard_size,corners,ret)
        # resize_img = cv.resize(img,(600,600))
        # cv.imshow(f"img{img_path}",resize_img)
        # for i in corners:
        #     xy = i[0]
        #     plt.scatter(xy[0], xy[1])
        # plt.show()
        # continue

        if ret == True:
            # 3维点世界坐标放入列表
            obj_points.append(object_points)
            # 寻找亚像素点,没用,不采取该算法,采用则删除下面的 None if True else
            corners2 = None if True else cv.cornerSubPix(gray, corners, (1, 1), (-1, -1), criteria)
            if corners2 is not None:    # 找到
                img_points.append(corners2)
            else:  # 没找到
                img_points.append(corners)

    # 进行摄像机标定 ret 是标定误差
    ret, mtx, dist, rvecs, tvecs = cv.calibrateCamera(obj_points,img_points,gray_shape[::-1],None,None)

    # 相机矩阵,内部矩阵,内参
    print(f"Camera matrix : {ret}\n")
    print(mtx)
    # np.save("mtx",mtx)
    # 畸变系数
    print("dist : \n")
    # np.save("dist",dist)
    print(dist)
    # 旋转向量
    print("rvecs : \n")
    print(rvecs)
    # 转移向量
    print("tvecs : \n")
    print(tvecs)

    # 去畸变
    path = np.random.choice(images_path)
    img = cv.imread(path)
    h, w = img.shape[:2]
    # 得到对应的校正后的 K和ROI, 原来的内参,畸变系数,照片大小,保留比例(和原来相似比例),校正后图片大小
    newcameramtx, roi = cv.getOptimalNewCameraMatrix(mtx, dist, (w, h),0.8, (w, h))  # 自由比例参数
    # 矫正图像,使用cv.undistort进行 原图,内参,矫正参数,新的内参
    dst = cv.undistort(img, mtx, dist, None, newcameramtx)
    img = cv.resize(img, (600, 600))
    dst = cv.resize(dst, (600, 600))
    cv.imshow("img",img)
    cv.imshow("dst",dst)
    cv.waitKey(0)
    cv.destroyAllWindows()

if __name__ == '__main__':
    # 输入放照片的地址和棋盘格子数量
    calibration(r"C:\Users\zhouq\Desktop\pic",(7,7))

结果:

摄像机模型建立和手机标定Python实现,计算机视觉,python,计算机视觉

成功求出了自己手机的摄像头内参,畸变系数和对应照片的外参。文章来源地址https://www.toymoban.com/news/detail-758559.html

到了这里,关于摄像机模型建立和手机标定Python实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • ThreeJS - 修复摄像机近距离模型或者摄像机在某些观察角度3D模型部分或者全部不可见的问题

    最近使用three.js在场景中显示gltf模型时候,当我使用 THREE.OrbitControls 操作摄像机想近距离观察gltf模型的时候发现一部分模型消失了,比如说假如这个模型是一匹马,当我远距离观察时可以完整的看到整匹马,但是当我想拉近摄像头近距离观察马的时候,这个时候我只能看到马

    2023年04月08日
    浏览(24)
  • unity实现简单的摄像机震动效果(包括普通摄像机和虚拟摄像机)

    用代码实现摄像机简单的震动效果

    2024年02月12日
    浏览(16)
  • 相机模型Omnidirectional Camera(全方位摄像机)

    相机模型Omnidirectional Camera(全方位摄像机)

    大多数商用相机都可以描述为针孔相机,通过透视投影进行建模。然而,有些投影系统的几何结构无法使用传统针孔模型来描述,因为成像设备引入了非常高的失真。其中一些系统就是全方位摄像机。 有几种方法可以制作全向相机。屈光照相机(Dioptric cameras)使用成形透镜的组

    2024年04月25日
    浏览(7)
  • 用python获取海康摄像机视频

    要调用海康摄像机视频,需要使用海康SDK提供的API。以下是一个简单的示例代码,可以连接到海康摄像机并获取视频流: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel from PyQt5.QtGui import QPixmap from PyQt5.QtCore import QTimer from HCNetSDK import * class Camera(QWidget):     def _

    2024年02月11日
    浏览(13)
  • 【UE4】 通过按钮点击实现摄像机的切换 并通过鼠标控制新摄像机的旋转

    【UE4】 通过按钮点击实现摄像机的切换 并通过鼠标控制新摄像机的旋转

    首先创建了4个Actor蓝图类 每个蓝图类内只拥有一个摄像机组件 将每个actor蓝图类摆放到场景的合适位置 在关卡蓝图中创建自定义事件,当该事件触发时切换摄像机 创建一个控件蓝图,在控件蓝图中创建如下5个按钮,并创建点击事件。按钮分别表示车上的4个镜头和车外自由

    2023年04月09日
    浏览(40)
  • Python调用海康SDK对接摄像机

    Python调用海康SDK对接摄像机

    以前做过的项目都是通过 ffmpeg c++ 来捕获摄像机的 RSTP 视频流来处理视频帧,抽空看了一下海康的SDK说明,使用 python ctypes方式实现了对海康SDK DLL的调用, 可以对视频预览、抓图、抽帧、云台控制、布防等任务,SDK使用C++库,速度也很快。如果不要求对视频帧进行实时智能算

    2024年01月16日
    浏览(7)
  • 普通摄像机之开源实时车牌识别实现

    普通摄像机之开源实时车牌识别实现

    各位从事安防的童鞋可能都或多或少的涉及到人脸识别、车牌识别、视频结构化等应用,但是这些应用都是基于硬件实现的,比如本文将要提及的车牌识别算法一般都是硬件厂家集成到摄像机中算法,通过对接设备接口来实现车牌的识别,或者说通过厂家的智能分析平台集成

    2024年02月08日
    浏览(8)
  • Unity摄像机旋转与移动脚本实现

            最近做项目经常用到需要控制摄像机的地方,查阅了网上的方法后,以自己的需要写了一个这样的功能。希望对码友有所帮助        (本脚本放在摄像机上)         摄像机脚本功能:           1、通过键盘的WASD键控制摄像机的前后左右移动           2、通过

    2024年02月13日
    浏览(37)
  • python从网络摄像机取视频流的步骤

    python从网络摄像机取视频流的步骤

    训练好的模型要到真实环境中使用,怎么能被数据源难倒 掌握opencv-python获取网络摄像机视频数据的方法 提示:这里可以添加要学的内容 测试结果: 了解更多关于rtsp协议取视频流。 取海康网络摄像机实时流 url = “rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stre

    2024年02月06日
    浏览(8)
  • Unity实现2D游戏跟随摄像机(平滑移动)

    Unity实现2D游戏跟随摄像机(平滑移动)

    摄像机运行效果如下所示。 首先创建一个可用的玩家角色,写好移动逻辑,如果要使用在Unity商店中购买的资源,可以点击Window菜单栏 Package Manager选项,来打开Package Manager窗口,如下所示,然后下载你需要的资源。 如果你没有在资源商店的精灵资产,可以在Hierarchy视图,右

    2024年02月19日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包