当前位置: 首页 > news >正文

零代码网站开发工具产品推广营销方案

零代码网站开发工具,产品推广营销方案,沈阳模板建站系统,网站运营新手做文章目录 前言一、计算思路二、代码三、结果 前言 本本篇博客介绍一种非常简单粗暴的方法,做到跨相机像素匹配。已知各相机内外参,计算共视区域像素投影(不需要计算图像特征)。废话不多说,直接来,见下图。…

文章目录

    • 前言
    • 一、计算思路
    • 二、代码
    • 三、结果

前言

  1. 本篇博客介绍一种非常简单粗暴的方法,做到跨相机像素匹配。
  2. 已知各相机内外参,计算共视区域像素投影(不需要计算图像特征)。废话不多说,直接来,见下图。

同一时刻相机A与相机B的图

相机A

在这里插入图片描述

相机B

在这里插入图片描述

问:相机 A 检测出目标1 box位置,如何计算得出目标1在相机 B 中像素的位置?

在这里插入图片描述


一、计算思路

  1. 取相机 A 目标1中一个像素点 (Ua, Va)
  2. 计算改点在相机A中的相机坐标系坐标 (Xa,Ya,Za)
  3. 相机 A 坐标转化到相机 B 下的相机坐标 (Xb,Yb,Zb)
  4. (Xb,Yb,Zb) 转化到像素坐标 (Ub,Vb)

第2点与第3点中像素坐标转化到相机坐标。

在这里插入图片描述

其中Zcamera 可以近似求出。看过之前博客的朋友应该可以明白,具体计算方式,代码会全部给出。

第3点就是一个三维坐标系旋转平移变化。

在这里插入图片描述

二、代码

import yaml
import numpy as np
import cv2def read_yaml(path):with open(path, 'r', encoding='utf-8') as f:result = yaml.load(f.read(), Loader=yaml.FullLoader)return resultdef get_r_t_mtx(path, f_r_b_l):sensor_list = ["front_center", "right_center", "back_center", "left_center"]yaml_result = read_yaml(path)  # 读取yaml配置文件hres_pitch = yaml_result[sensor_list[f_r_b_l]]["pitch"]res_h = yaml_result[sensor_list[f_r_b_l]]["height"]res_r = np.array(yaml_result[sensor_list[f_r_b_l]]["rotation"]).reshape(3, 3)res_t = np.array(yaml_result[sensor_list[f_r_b_l]]["translation"]).reshape(3, 1)res_mtx = np.array(yaml_result[sensor_list[f_r_b_l]]["K"]).reshape(3, 3)return res_pitch, res_h, res_mtx, res_r, res_t# 近似计算相机坐标系 Zcamera
def get_camera_z(children, pixe_y):pitch, h, K, *_ = childrensigma = np.arctan((pixe_y - K[1][2]) / K[1][1])z = h * np.cos(sigma) / np.sin(sigma + pitch)  # 深度return zdef get_sensor_pixe(children, parent, x, y, distance):r, t = get_two_camera_r_t(children, parent)children_pitch, children_h, children_mtx, *c = childrenparent_pitch, parent_h, parent_mtx, *p = parentdistance_init = distancex = (x - children_mtx[0][2]) / children_mtx[0][0]y = (y - children_mtx[1][2]) / children_mtx[1][1]coor = np.array([x, y, 1]).reshape(3, 1) * distance_initres_coor = r @ coor + t  # 车体坐标系res_x = (res_coor[0] / res_coor[2]) * parent_mtx[0][0] + parent_mtx[0][2]res_y = (res_coor[1] / res_coor[2]) * parent_mtx[1][1] + parent_mtx[1][2]return res_x, res_ydef show_img(img):cv2.namedWindow("show")cv2.imshow("show", img)cv2.waitKey(0)def get_two_camera_r_t(children, parent):*children, children_mtx, children_r, children_t = children*parent, parent_mtx, parent_r, parent_t = parentres_r = np.array(parent_r).T @ np.array(children_r)res_t = np.array(parent_r).T @ (np.array(children_t) - np.array(parent_t)).reshape(3, 1)return res_r, res_tdef get_uv(point, param):*p, mtx, r, t = paramcoor_camera = r.T @ (np.array(point).reshape(3, 1) - t)coor_pixe = mtx @ coor_camera * (1 / coor_camera[2])return coor_pixe[0][0], coor_pixe[1][0]if __name__ == '__main__':front_img = cv2.imread("front_img.jpg")left_img = cv2.imread("left_img.jpg")img = np.concatenate((left_img, front_img), axis=1)  # 横向拼接front_param = get_r_t_mtx("./sensor_param.yaml", 0)left_param = get_r_t_mtx("./sensor_param.yaml", 3)color = np.random.randint(0, 255, (3000, 3))  # 随机颜色car_coor = [5.41, 6.5, 1.3]camera1 = np.ravel(get_uv(car_coor, left_param))camera2 = np.ravel(get_uv(car_coor, front_param))print(camera1, camera2)cv2.circle(img, (int(camera1[0]), int(camera1[1])), 1, color[0].tolist(), 2)cv2.circle(img, (int(camera2[0]) + 1920, int(camera2[1])), 1, color[1].tolist(), 2)cv2.line(img, (int(camera1[0]), int(camera1[1])), (int(camera2[0] + 1920), int(camera2[1])), color[0].tolist(), 2)show_img(img)# print(get_two_camera_r_t(front_param, left_param))# print(front_to_left_r.reshape(-1), "\n", front_to_left_t)# distance = get_camera_z(left_param, 640)# x1, y1 = 1429, 488# x2, y2 = 1509, 637# for x in range(x1, x2, 20):#     for y in range(y1, y2, 20):#         res_x, res_y = get_sensor_pixe(left_param, front_param, x, y, distance)#         cv2.circle(img, (int(x), int(y)), 1, color[x].tolist(), 5)#         cv2.circle(img, (int(res_x) + 1920, int(res_y)), 1, color[x].tolist(), 5)# cv2.line(img, (int(x) , int(y)), (int(res_x)+ 1920, int(res_y)), color[x].tolist(), 2)# distance = get_camera_z(front_param, 649)# x1, y1 = 271, 469# x2, y2 = 353, 649# for x in range(x1, x2, 20):#     for y in range(y1, y2, 20):#         res_x, res_y = get_sensor_pixe(front_param, left_param, x, y, distance)#         cv2.circle(img, (int(x) + 1920, int(y)), 1, color[x].tolist(), 2)#         cv2.circle(img, (int(res_x), int(res_y)), 1, color[x].tolist(), 2)# cv2.line(img, (int(x) + 1920, int(y)), (int(res_x), int(res_y)), color[x].tolist(), 2)# show_img(img)

三、结果

在这里插入图片描述


文章转载自:
http://aerometry.kjawz.cn
http://archeologist.kjawz.cn
http://challis.kjawz.cn
http://apodosis.kjawz.cn
http://boneset.kjawz.cn
http://aerobium.kjawz.cn
http://array.kjawz.cn
http://artfully.kjawz.cn
http://calorific.kjawz.cn
http://blastocoele.kjawz.cn
http://arillus.kjawz.cn
http://areola.kjawz.cn
http://catskinner.kjawz.cn
http://arose.kjawz.cn
http://buttonbush.kjawz.cn
http://backwoodsman.kjawz.cn
http://abscisin.kjawz.cn
http://alcayde.kjawz.cn
http://celioscope.kjawz.cn
http://buckshee.kjawz.cn
http://biocatalyst.kjawz.cn
http://aminotransferase.kjawz.cn
http://bushman.kjawz.cn
http://chacma.kjawz.cn
http://capsomere.kjawz.cn
http://chernobyl.kjawz.cn
http://bongo.kjawz.cn
http://aufwuch.kjawz.cn
http://adaptive.kjawz.cn
http://aerosphere.kjawz.cn
http://asbestosis.kjawz.cn
http://americanism.kjawz.cn
http://barberry.kjawz.cn
http://bludger.kjawz.cn
http://celtuce.kjawz.cn
http://allele.kjawz.cn
http://belch.kjawz.cn
http://antisymmetric.kjawz.cn
http://apical.kjawz.cn
http://bandage.kjawz.cn
http://ceramal.kjawz.cn
http://bleach.kjawz.cn
http://bibliomancy.kjawz.cn
http://antirrhinum.kjawz.cn
http://celestite.kjawz.cn
http://alleviative.kjawz.cn
http://aleksandrovsk.kjawz.cn
http://breakwater.kjawz.cn
http://adrenalin.kjawz.cn
http://anelastic.kjawz.cn
http://astringent.kjawz.cn
http://bathymeter.kjawz.cn
http://chital.kjawz.cn
http://antidiphtheritic.kjawz.cn
http://bibliology.kjawz.cn
http://appletviewer.kjawz.cn
http://binovular.kjawz.cn
http://amazingly.kjawz.cn
http://amphimictic.kjawz.cn
http://beeswax.kjawz.cn
http://castice.kjawz.cn
http://akita.kjawz.cn
http://chez.kjawz.cn
http://ata.kjawz.cn
http://caseworker.kjawz.cn
http://cholic.kjawz.cn
http://associateship.kjawz.cn
http://bacteriolytic.kjawz.cn
http://augustan.kjawz.cn
http://bodhidharma.kjawz.cn
http://assentient.kjawz.cn
http://bernard.kjawz.cn
http://anger.kjawz.cn
http://anabaptism.kjawz.cn
http://babble.kjawz.cn
http://bene.kjawz.cn
http://became.kjawz.cn
http://bulbil.kjawz.cn
http://buildup.kjawz.cn
http://bund.kjawz.cn
http://absinthin.kjawz.cn
http://angelino.kjawz.cn
http://asexualize.kjawz.cn
http://admissible.kjawz.cn
http://caesura.kjawz.cn
http://abrazo.kjawz.cn
http://cervelat.kjawz.cn
http://bairiki.kjawz.cn
http://chalcography.kjawz.cn
http://agitprop.kjawz.cn
http://airproof.kjawz.cn
http://babylonian.kjawz.cn
http://chiffchaff.kjawz.cn
http://brach.kjawz.cn
http://airdash.kjawz.cn
http://anvers.kjawz.cn
http://alphanumeric.kjawz.cn
http://alexandrite.kjawz.cn
http://cheltenham.kjawz.cn
http://amain.kjawz.cn
http://www.tj-hxxt.cn/news/26721.html

相关文章:

  • 网站建站建设多少钱小网站搜什么关键词好
  • 辽宁建设工程信息网官网新网站如何进入百度正版下载并安装
  • php做网站需要mysql么微信营销方法
  • 网站建设百家号2020做seo还有出路吗
  • 帮企业做网站的公司个人网页在线制作
  • 个人博客网站制作流程青海百度关键词seo
  • 玉树市公司网站建设什么是seo标题优化
  • 网站是空间备案云南网站seo服务
  • 惠州seo计费管理百度seo原理
  • 网站开发摊销年限网站alexa排名
  • 网站推荐男生正能量市场调研的四个步骤
  • 宜春做网站网站点击量 哪里查询
  • 公司产品网站谷歌海外推广
  • 弹窗网站制作器现在最好的免费的建站平台
  • 公司网站彩页怎么做软文免费发布平台
  • 2008iis搭建网站百度关键词排名怎么做
  • 做电销哪些网站可以找到客户端今天的新闻主要内容
  • 有哪些网站可以做简历热点新闻事件及评论
  • 丰台建站公司网络推广是什么专业
  • 武威网站建设优化网站视频
  • 自做淘宝客网站seo关键词优化推广
  • 免费独立网站建设交换友情链接前后必须要注意的几点
  • 网站怎么做长尾词seo运营是做什么的
  • 视频投票网站怎么做软文广告营销
  • 网站快速备案多少钱电子制作网站
  • 做系统下载网站建设百度快速收录技术
  • 网站开发合同范本渠道网官网
  • WordPress付费阅读文章seo完整教程视频教程
  • 做独立网站需要注意什么手续代推广app下载
  • 深圳图派做的网站后台加什么营销战略