驾驶模拟左拐右拐

目录

根据4个点确定投影变换关系:

驾驶模拟左拐右拐 平移

四个点选

通过3个点定义放射变换:结果不对


根据4个点确定投影变换关系:

import cv2
import numpy as npdef apply_perspective_transform(image, src_points, dst_points):# 将选择的点转换为浮点数数组pts1 = np.float32(src_points)pts2 = np.float32(dst_points)# 计算透视变换矩阵perspective_matrix = cv2.getPerspectiveTransform(pts1, pts2)# 应用透视变换result = cv2.warpPerspective(image, perspective_matrix, (image.shape[1], image.shape[0]))return result# 加载图像
image = cv2.imread(r'0831_1825_12.jpg')# 定义源点和目标点(可以自行修改这些点的坐标)
src_points = [(614,251), (615,385), (821,388), (821,249)]  # 示例:原始图像的四个顶点
dst_points =[(614+100,251), (615+100,385-20), (821+110,388-20), (821+110,249)]  # 示例:原始图像的四个顶点# 应用透视变换
result=apply_perspective_transform(image, src_points, dst_points)cv2.imshow("image", image)
cv2.imshow("Transformed Image", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

驾驶模拟左拐右拐 平移

import randomimport cv2
import numpy as npdef toushi(turn_right,step):rows, cols = image.shape[:2]# 定义原图像中的四个角点pts1 = np.float32([[0, 0], [cols, 0], [0, rows], [cols, rows]])angle_x=4np.random.uniform(-angle_x, angle_x)scale= step*10+angle_x# 定义变换后的四个点,模拟左转并保持车辆近似垂直向上# 将左侧点向右偏移,右侧点向左偏移,模拟车辆左转# 同时保持车辆近似垂直向上if turn_right:offset_x_left = -scale  # 左侧点向右偏移量offset_x_right = scale  # 右侧点向左偏移量else:offset_x_left = scale  # 左侧点向右偏移量offset_x_right = -scale  # 右侧点向左偏移量offset_y = 0  # 垂直偏移量pts2 = np.float32([[offset_x_left, offset_y],                     # 左上角[cols - offset_x_right, 0],                    # 右上角[offset_x_left, rows - offset_y],              # 左下角[cols - offset_x_right, rows]                  # 右下角])# 计算透视变换矩阵M = cv2.getPerspectiveTransform(pts1, pts2)# 应用透视变换transformed_image = cv2.warpPerspective(image, M, (cols, rows))return transformed_imageif __name__ == '__main__':# 读取图像aimage = cv2.imread(r'B:\project\jijia\lixiang\data_util\imgs\000002\0831_1824_1.jpg')image = cv2.imread(r'B:\project\jijia\lixiang\data_util\imgs\000002\0831_1825_12.jpg')# 图像的尺寸# 图像的尺寸while True:turn_right = random.choice([0, 1])for step in range(1,12):print(turn_right,step)transformed_image=toushi(turn_right, step)# 显示原图和变换后的图像cv2.imshow('Original Image', image)cv2.imshow('Transformed Image', transformed_image)cv2.waitKey(0)cv2.destroyAllWindows()

四个点选

import cv2
import numpy as np# 初始化全局变量
points = []# 定义鼠标回调函数,用于记录用户点击的点
def select_points(event, x, y, flags, param):global pointsif event == cv2.EVENT_LBUTTONDOWN:points.append((x, y))cv2.circle(image, (x, y), 5, (0, 255, 0), -1)cv2.imshow("Original Image", image)if len(points) == 4:sorted_points = sort_points_clockwise(points)apply_perspective_transform(sorted_points)# 将点按顺时针顺序排序的函数
def sort_points_clockwise(pts):# 将点转换为NumPy数组pts = np.array(pts)# 计算中心点center = np.mean(pts, axis=0)# 计算点相对于中心点的角度angles = np.arctan2(pts[:, 1] - center[1], pts[:, 0] - center[0])# 按照角度排序,逆时针顺序,所以使用负号将其变为顺时针排序sorted_pts = pts[np.argsort(angles)]return sorted_pts# 应用透视变换的函数
def apply_perspective_transform(sorted_points):# 定义目标图像的四个顶点width, height = image.shape[1], image.shape[0]pts1 = np.float32(sorted_points)print(pts1)# 目标点矩阵, 我们选择目标图像的四个角落作为目标点pts2 = np.float32([[0, 0], [width, 0], [width, height], [0, height]])# 计算透视变换矩阵perspective_matrix = cv2.getPerspectiveTransform(pts1, pts2)# 应用透视变换result = cv2.warpPerspective(image_copy, perspective_matrix, (width, height))# 显示结果cv2.imshow("Transformed Image", result)# 加载图像
image = cv2.imread(r'B:\project\jijia\lixiang\data_util\imgs\000002\0831_1825_12.jpg')
height, width = image.shape[:2]
center_x = width // 2
cv2.line(image, (center_x, 0), (center_x, height), (255, 0, 0), 2)  # 蓝色垂直线
image_copy = image.copy()# 在图像中绘制一条垂直线# 创建窗口并设置鼠标回调函数
cv2.imshow("Original Image", image)
cv2.setMouseCallback("Original Image", select_points)print("请点击图像中的四个点来选择透视变换的区域,按ESC键退出。")# 主循环
while True:key = cv2.waitKey(1) & 0xFFif key == 27:  # 按ESC键退出breakelif key == ord('r'):  # 按'r'键重置选择points = []image = image_copy.copy()cv2.line(image, (center_x, 0), (center_x, height), (255, 0, 0), 2)  # 重绘垂直线cv2.imshow("Original Image", image)cv2.destroyAllWindows()

通过3个点定义放射变换:结果不对

中心点不变,从右向左变道:

下面是变后的,结果不对

代码:

import cv2
import numpy as np# 读取图像
image = cv2.imread("E:\project\depth\depth_buquan\img_v3_02ea_0378b2ff-164a-4229-b4ae-4a5d4df80dfg.jpg")image=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
x1,y1=610,323
x2,y2=1170,507
x3,y3=819,504x1_new,y1_new=610,323
x2_new,y2_new=819,504
x3_new,y3_new=424,504
# 定义原始的三个点 (x, y)
pts1 = np.float32([[x1, y1], [x2, y2], [x3, y3]])# 定义三个新位置的点 (x', y')
pts2 = np.float32([[x1_new, y1_new], [x2_new, y2_new], [x3_new, y3_new]])# 计算仿射变换矩阵
M = cv2.getAffineTransform(pts1, pts2)# 对图像进行仿射变换
transformed_image = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))# 显示结果
cv2.imshow('image', image)
cv2.imshow('Transformed Image', transformed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

spring--小白面试版01

bean 1.Spring框架中的bean是单例的吗? Service Scope("singleton") public class UserServicelmpl implements UserService { } 在Scope中 singleton: bean在每个Spring IOC容器中只有一个实例 prototype:一个bean的定义可以有多个实例 2. Spring框架中的单例bea…

jdk11安装步骤(含安装包)

安装包 通过百度网盘分享的文件:jdk-11.0.15.1_windows-x64_bin.exe 链接:https://pan.baidu.com/s/1IYRnvtPvfgloS8rawtRDvg 提取码:sv1w 一、安装过程 双击安装程序 二、配置环境 右键“此电脑”,点击“属性”,点…

学生管理系统升级(登录注册 + 关联学生管理系统)

新增需求 这是在昨天的基础初代版本上面新增一个登录注册忘记密码的功能 需求分析 注册 登录 忘记密码 user类代码呈现 package StudentSystem;public class User {private String username;private String password;private String personID;private String phoneNumber;pu…

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务…

KTH5701 系列低功耗、高精度 3D 霍尔传感器

KTH5701 是一款数字输出的 3D 霍尔芯片,内部 分别集成了 X 轴、 Y 轴和 Z 轴三个独立的霍尔传感器。 信号链采用高精度运放通过 16 bit ADC 将模拟信号 转换成数字输出。外部主机可以采用 SPI 或 I2C 两种 模式读出测量数据。此外,在芯片…

2024第三届大学生算法大赛 真题训练一 解题报告 | 珂学家

前言 题解 这是第三届大学生算法大赛(第二届为清华社杯)的赛前练习赛一. 这是上界比赛的体验报告: 2023第二届“清华社杯”大学生算法大赛 解题报告(流水账版) | 珂学家,个人还是非常推荐这个比赛。 难度分布:4 easy/4 mid-hard/2 hard 赛前练习赛一…

Node.js发票查验接口示例、识别查验接口参数返回

财务、审计等经常与发票打交道的人员常常会遇到虚假发票、错票、重复报销等一系列问题。对于会计审计、代理记账、电子商务等发票查验量多的企业来说,成千上万张发票如果仅依赖于人工来进行核验,速度慢效率低,准确率也没保障,因此…

Tomato靶机通关攻略

步骤一:进行端口扫描,找寻靶机地址 步骤二:访问靶机地址 步骤三:利用dirb进行扫描 得出:/antibot_image/进行访问 步骤四:进入antibots->info.php->右击进入页面源代码->发现存在文件包含漏洞 步…

如何让wave波形信号不显示全路径

Modesim仿真如何让wave信号不显示全路径 问题说明 在使用modesim仿真时,需要利用modesim的wave界面显示调试信号的波形,默认情况下wave栏的左边是显示抓捕信号的全路径的,如下图所示: 这种情况下,区分信号比较麻烦,如…

vulhub xxe靶机渗透测试

1.先用kali的nmap扫描端口 2. 找到靶机地址后用工具扫描目录 3.我们先进入robots.txt中 4.访问xxe文件 5.在登陆时抓包 这里可以看到在我们用户名的位置是有回显的,我们可以在这里做文章 6.因为在 linux 系统中/etc/passwd 文件包含有用户账号信息所以我们可以写一…

开源轻量级进程监控工具monit的使用以及monit进程监控工具常用的监控配置案例示例大全

一、开源轻量级进程监控工具monit的应用 今天在服务器杀进程时,发现有一个进程一直在重启,寻找服务器各种定时任务未发现有定时程序,也没有发现supervisord的进程管理服务,后来才发现服务器上启用了monit这个工具,moni…

上证50ETF期权交易策略有哪些?期权交易时要注意什么?

今天带你了解上证50ETF期权交易策略有哪些?期权交易时要注意什么?上证50ETF期权是一种以华夏50etf基金为标的物的金融衍生品,它允许投资者通过买卖期权合约来对冲风险或进行投机。 期权趋势型策略 趋势型的策略就是我们通常说的追涨杀跌&am…

Anaconda最新安装教程

1 概述 1 介绍 Anaconda是一个专注于数据分析的Python发行版本,它为科学计算和数据科学领域提供了强大的支持。Anaconda是一个开源的Python发行版,包含了conda、Python以及超过190个科学包及其依赖项。这些包涵盖了数据分析、机器学习、深度学习等多个…

自己动手写CPU_step5_移动指令

移动操作指令 define EXE_MOVN 6b001011 //不等于0转移 if rt ! 0 then rs -> rd define EXE_MOVZ 6b001010 //等于0转移 if rt 0 then rs -> rd define EXE_MFHI 6b010000 // hi -> rd define EXE_MFLO 6b010010 // lo…

828华为云征文|华为云Flexus X实例docker部署harbor镜像仓库

828华为云征文|华为云Flexus X实例docker部署harbor镜像仓库 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错…

使用豆包 MarsCode 编程助手,兑换 4090 显卡!

关于豆包 MarsCode 编程助手 豆包 MarsCode 编程助手是一个智能化的编程工具,通过与 AI 的对话,用户可以轻松获取编程建议、解决问题并提高编程效率。无论您是编程新手还是经验丰富的开发者,MarsCode 都能为您提供极具价值的帮助。 点击直达…

查询电脑上已经连接的wifi密码

首先在电脑屏幕的右下角找到自己的wifi图标,右键wifi的图标,点击打开“网络和Internet设置” 进入设置后左侧先点击WLAN,然后在右侧找到并点击网络和共享中心 在网络和共享中心中点击连接后面,WLAN的名称 在WLAN状态中点击无线…

【ruoyi框架】开箱即用的管理系统框架

目录 1.简介 2.快速开始 2.1.仓库 2.2.环境初始化 3.使用介绍 3.1.权限与组件 3.2.开发与测试 1.简介 管理系统是当前软件市场上最常见的软件,管理系统在功能和界面上都有大量通用的点。 功能上通用的点包括但不限于: 角色、权限管理菜单管理鉴…

六西格玛项目:从定义问题到控制成果,全程无忧——张驰咨询

什么是六西格玛项目 六西格玛项目是一种旨在通过改善企业质量流程管理,以“零缺陷”的完美商业追求,带动质量大幅提高、成本大幅度降低,最终实现企业财务成效的提升与企业竞争力的突破的管理策略。它由摩托罗拉公司的工程师比尔史密斯于1986…

【学习AI-相关路程-工具使用-自我学习-jetson收集数据-图片采集-训练前准备-基础样例 (5)】

【学习AI-相关路程-工具使用-自我学习-jetson&模型训练-图片识别-使用模型检测图片-基础样例 (5)】 1 -前言2 -环境说明3 -先行了解(1)整理流程了解(2)了解模型-MobileNet1、MobileNetV2 的主要特性&am…