最近发帖
来自分类:
page 1 of 212next »

import cv2
import torch
import os
import time
import pandas as pd
import numpy as np
import platform
import pathlib

pause = 0.2 # 每次扫描间隔时间
yolov5_path = '/home/yahboom/yolov5'
weight_path = "/home/yahboom/Dofbot/3.ctrl_Arm/best.pt"

def save_to_csv(coordinates, filename='coordinates.csv'):
"""保存坐
标到CSV文件
coordinates - 坐标列表,np.array格式"""
df = pd.DataFrame(coordinates)
df.to_csv(filename, index=False, encoding='utf-8-sig')

def output(results):

coordinates = []
maxA = 640*480
for _, row in results.iterrows():
u = (row['xmin'] + row['xmax']) / 2
v = (row['ymin'] + row['ymax']) / 2
size = (row['xmax'] - row['xmin']) * (row['ymax'] - row['ymin'])
if row['confidence'] > 0.4 and size < maxA*0.8:
coordinates.append((u,v,row['confidence']))

filename = 'coordinates.csv'
save_to_csv(coordinates, filename)
print(f"已保存 {len(coordinates)} 组坐标至 {filename}")

def scan(yolo_path, weight_path, pause):
# Initialize the camera and the YOLOv5 model
model = torch.hub.load(yolo_path, "custom", path=weight_path, source="local") # local repo
cap = cv2.VideoCapture(0) # 0 is usually the default camera, 1 is the us camera connected
if not cap.isOpened():
print("Error: Could not open camera.")
return NotImplementedError
while True:
print("================================================================")
# Capture a frame
ret, frame = cap.read()
if not ret:
print("Error: Could not read frame.")
return NotImplementedError

# Save the frame
frame_filename = 'temp_frame.jpg'
cv2.imwrite(frame_filename, frame)

# use yolov5 to detect the object and draw the bounding box
resultimg = model(frame_filename)
result = resultimg.pandas().xyxy[0].sort_values("xmin")
output(result)
try:
os.remove('temp_frame.jpg')
except:
pass
time.sleep(pause)

if name == "main":
scan(yolov5_path, weight_path, pause)

Re: 代码缓存站FalconiformesFalconiformes, 01 Apr 2025 07:56

import cv2
import torch
import os
import time
import pandas as pd
import numpy as np

  1. 真实世界的坐标转换
  2. 做文档的读写:实时坐标

pause = 0.2 # 每次扫描间隔时间
yolov5_path = 'C:\\Users\\ROG\\iamengineer\\VisionFNW\\yolov5'
weight_path = "C:\\Users\\ROG\\iamengineer\\VisionFNW\\yolov5\\runs\\train\\exp10\\weights\\best.pt"

def save_to_csv(coordinates, filename='coordinates.csv'):
"""保存坐
标到CSV文件
coordinates - 坐标列表,np.array格式"""
df = pd.DataFrame(coordinates)
df.to_csv(filename, index=False, encoding='utf-8-sig')

def output(results):

coordinates = []
maxA = 640*480
for _, row in results.iterrows():
u = (row['xmin'] + row['xmax']) / 2
v = (row['ymin'] + row['ymax']) / 2
size = (row['xmax'] - row['xmin']) * (row['ymax'] - row['ymin'])
if row['confidence'] > 0.5 and size < maxA*0.8:
coordinates.append((u,v))

filename = 'coordinates.csv'
save_to_csv(coordinates, filename)
print(f"已保存 {len(coordinates)} 组坐标至 {filename}")

def scan(yolo_path, weight_path, pause):
# Initialize the camera and the YOLOv5 model
model = torch.hub.load(yolo_path, "custom", path=weight_path, source="local") # local repo
cap = cv2.VideoCapture(1) # 0 is usually the default camera, 1 is the us camera connected
if not cap.isOpened():
print("Error: Could not open camera.")
return NotImplementedError
while True:
print("================================================================")
# Capture a frame
ret, frame = cap.read()
if not ret:
print("Error: Could not read frame.")
return NotImplementedError

# Save the frame
frame_filename = 'temp_frame.jpg'
cv2.imwrite(frame_filename, frame)

# use yolov5 to detect the object and draw the bounding box
resultimg = model(frame_filename)
result = resultimg.pandas().xyxy[0].sort_values("xmin")
output(result)
try:
os.remove('temp_frame.jpg')
except:
pass
time.sleep(pause)

if name == "main":
scan(yolov5_path, weight_path, pause)

Re: 代码缓存站FalconiformesFalconiformes, 29 Mar 2025 06:56

positions = {
1: [(13.2, 11), (11, 16.4), (18, 5.3), (10, 0.5)],
2: [(-7.6, 9.6), (-7.8, 18.7), (5.1, 18.4), (4.5, 9.8)],
3: [(-11.3, -1.4), (-21, -5), (-13.1, 6.3), (-5, 9.5)],
4: [(-18.4, 7.1), (-31, 17), (-14.2, 31.3), (-5.5, 18.2)],
5: [(-9.6, 16.5), (-13.2, 33.3), (8, 33.5), (6.5, 17)],
6: [(2.4, 19.2), (10.6, 33.5), (27.2, 20.1), (12.5, 9.2)],
}

Re: 代码缓存站FalconiformesFalconiformes, 28 Mar 2025 15:59

from roboticstoolbox import DHRobot, RevoluteDH, jtraj
import numpy as np
from math import *
from matplotlib import pyplot as plt

  1. 旋转矩阵:R
  2. 旋转矩阵的逆:R.T
  3. 相机内参矩阵:camera_intrinsic
  4. 相机内参矩阵的逆:camera_intrinsic_inv
  5. 相机坐标:cam_base_3d

plt.ion()
cam_end = np.array([-10, 5, 0, 1])

  1. 相机内参矩阵参数

fx, fy = 964,965
cx, cy = 320, 240

  1. 改进型DH参数(a, alpha, d, theta)

joint1 = RevoluteDH(alpha=np.pi/2, d=12, modified=True)
joint2 = RevoluteDH(a=8.5, modified=True)
joint3 = RevoluteDH(a=8.5, modified=True)
joint4 = RevoluteDH(a=19, modified=True)

  1. 构建机械臂对象

robot = DHRobot([joint1, joint2, joint3, joint4], name="4-DOF Arm")

  1. 逆运动学

T_desired = np.array([[1, 0, 0, 0],
[0, 1, 0, 20],
[0, 0, 1, 0],
[0, 0, 0, 1]])

robot.jointlimit = np.array([[0, pi], [0, pi], [-pi/2, pi/2], [-pi/2, pi/2]])
for _ in range(10):
sol = robot.ikine_LM(T_desired, q0=[0,0,0,0], mask=[1,1,1,0,0,0], joint_limits=True)
if sol.success:
print(sol.q)
break

input = [sol.q[0]*180/pi, sol.q[1]*180/pi, sol.q[2]*180/pi+90, sol.q[3]*180/pi+90]
print('关节输入:',input)

Re: 代码缓存站FalconiformesFalconiformes, 23 Mar 2025 16:09

positions = {
1: [(7.9, 13.2), (14.6, 3.8), (7.5, -0.5), (0, 9)],
2: [(-7.5, 13.5), (4, 14.5), (4.5, 6.7), (-7, 5)],
3: [(-15.4, 0.3), (-10.6, 10.7), (-3.6, 7.3), (-7.8, -3.6)],
4: [(-35.4, 6.6), (-24.9, 24.8), (-12.3, 14.6), (-20.3, 0.8)],
5: [(-27.4, 23.4), (-9.2, 33.9), (-3.4,18.8), (-17.2, 10.8)],
6: [(-12, 34), (9, 34), (6.5, 18), (-9.5, 18)],
7: [(6.6, 35.4), (24.8, 24.9), (14.6, 12.3), (0.8, 20.3)],
8: [(23.4, 27.4), (33.94, 9.21), (18.84, 3.37), (10.84, 17.23)]
}

Re: 代码缓存站FalconiformesFalconiformes, 23 Mar 2025 15:21

import cv2
import numpy as np

def pixel_to_ground(corner_list, pc):
# 定义像素坐标系的四个角点(顺序:左上、右上、右下、左下)
src_pts = np.array([
[0.0, 0.0],
[640.0, 0.0],
[640.0, 480.0],
[0.0, 480.0]
], dtype=np.float32)

# 将输入的地面角点转换为NumPy数组
dst_pts = np.array(corner_list, dtype=np.float32)

# 计算单应性矩阵
H, _ = cv2.findHomography(src_pts, dst_pts)

# 将像素坐标转换为地面坐标
pc_array = np.array([[pc]], dtype=np.float32)
ground_point = cv2.perspectiveTransform(pc_array, H)

# 提取并返回结果
x, y = ground_point[0][0]
return (x, y)

代码缓存站FalconiformesFalconiformes, 23 Mar 2025 14:49

import cv2
import numpy as np

def pixel_to_ground(corner_list, pc):
# 定义像素坐标系的四个角点(顺序:左上、右上、右下、左下)
src_pts = np.array([
[0.0, 0.0],
[640.0, 0.0],
[640.0, 480.0],
[0.0, 480.0]
], dtype=np.float32)

# 将输入的地面角点转换为NumPy数组
dst_pts = np.array(corner_list, dtype=np.float32)

# 计算单应性矩阵
H, _ = cv2.findHomography(src_pts, dst_pts)

# 将像素坐标转换为地面坐标
pc_array = np.array([[pc]], dtype=np.float32)
ground_point = cv2.perspectiveTransform(pc_array, H)

# 提取并返回结果
x, y = ground_point[0][0]
return (x, y)

20250323FalconiformesFalconiformes, 23 Mar 2025 14:45

这里面提到了我们买了十几条鱼放在家后面的水池里面(现在死的差不多了),这是仪式的第一部分。高考前几天,我妈去惠山上的一个寺给我点了盏祈福灯,又去了一个道观找了一位道长给我算算。道长说我要去南方,还说考试的时候要佩戴一点和兔子有关的东西。于是我爸妈马不停蹄地又去花花公子买了几件挺贵的带logo的polo衫,还网购了一些兔子勋章让我考试的时候戴。现在想来真是滑稽,但是当时也算是莫大的安慰,佩戴时也感受到了仪式感和莫名的勇气。高考不只是一次考试。它是人生中的一场试炼,任何人都没有资格嘲笑。还有那两件polo衫,现在我还经常穿。它们确实穿着舒服。

这个玩意存在的唯一价值就是显示本网站什么都放。
以及怀旧。

FalconiformesFalconiformes, 15 Dec 2021 16:32

高中三年对我的心智成熟、品格塑造、价值导向、生涯规划有着很大的促进和影响,使我客观而准确地认识了自己的能力与不足、目标与规划。

回首高中三年,我积极参与了学生社团及学校举办的运动会、合唱节、远足等团体活动,同时学校长期坚持的“天天锻炼一小时”体育教育方针也使我更加热爱锻炼与运动,其中我养成了打羽毛球的爱好;此外,高中三年我也发展了几段难忘的友情。

生物竞赛的学习和训练使我取得了全国联赛省赛区一等奖的成绩,也坚定了我对生命科学的热爱,树立了我从事生物相关行业的理想;在校期间大量的阅读奠定了我终身阅读的志向,学校浓厚的人文气息陶冶了我对文化的热爱和对社会的责任感。做一个使命担当者、问题解决者、优雅生活着,这些学校的育人方针亦成为我致力前行的方向。

展望未来,我热切希望在难忘的高中三年结束后,能够进入和生物有关的专业,将来学习和探索生命的奥秘,成为一名研究型人才。在生命科学的所有学科中,我尤其对动物学有兴趣,也希望将来的职业能与此有关。

愿我足够勤奋和幸运以守护这份天真的憧憬,希望我能在自己热爱的道路上矢志不渝。日月不淹,岁其代序,惟愿历尽千帆,归来仍少年。

应急备份FalconiformesFalconiformes, 26 Jan 2021 12:22

高三上学期我结束生物竞赛回归高考,进行紧锣密鼓的高中知识一轮复习,补习高二下学期的学习内容,尝试找回高考学科的学习节奏,并成功克服学习焦虑和畏难情绪,制定较为清晰的学习计划。同时我选择了游泳项目训练与考核,积极投入体育课程,顺利完成合格性检测。目前我仍需改进自己的学习效率和生活规律,加快学科能力恢复与提升,需要形成面对高考应有的学习态度和觉悟,摒弃杂念,以积极向上、不畏挑战的姿态迎接这个人生中的重要节点。

关于
FalconiformesFalconiformes 14 Nov 2020 08:30
讨论中 Hidden / Per page discussions » 重逢

改编自真实事件,但是和本文主旨似乎和现实背道而驰。

作于2018年冬。刊于校报的某一期。

人物原型已在2019年扫黑除恶行动中抓捕入狱。

关于FalconiformesFalconiformes, 14 Nov 2020 08:30

原来页面里面的附件引用经过listpages放到别的页面就只剩个名字的代码了……

还是用图床吧

我悟了FalconiformesFalconiformes, 14 Nov 2020 08:15

wikidot加载图片实在是太慢了···开始试用图床

变更图片存储位置FalconiformesFalconiformes, 19 Oct 2020 15:15

包括以前的优秀作文、周记、闲暇的奇怪作品等。

3.纸质文档搬运计划FalconiformesFalconiformes, 17 Jul 2020 05:42

本学期我投入了大量时间进行了生物竞赛的最后冲刺,积极主动地探索更高效的学习方法,大大提升了专业的学科素养,积累了大量自学经验。在理论复习与巩固之外,我们将知识结合实际,与大自然亲密接触,并进行了大量实验,如植物切片、动物解剖、小生态盒建设、昆虫标本收集、植物开花结实记录等。

1.尝试使用日期标签,如2020等。中心页可以改版为年份分类,不再使用Listpages

2.标签完善FalconiformesFalconiformes, 28 May 2020 02:41
FalconiformesFalconiformes 09 May 2020 10:54
讨论中 Hidden / Per page discussions » SNOW

2017年末的大雪真的记忆犹新啊……那时我也还是单纯可爱的小胖子,心里面还有很多不现实的理想。
现在看这些诗又害臊又自豪。

FalconiformesFalconiformes, 09 May 2020 10:54

这首诗原本没有标题,标题是我们商量以后自作主张加的。

关于FalconiformesFalconiformes, 30 Apr 2020 04:33

侧边栏已经大致补全,标签管理体系初具雏形。工具栏移至顶端。
主要用于:

  • 作品按类别归档;
  • 在显示待编辑和更新中页面。
Re: 1.页面补全FalconiformesFalconiformes, 03 Apr 2020 08:25
page 1 of 212next »
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License