线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
(API) Cam2D_Snapshot返回错误大小的图像
# 1
附加的代码始终如一地写入100x75图像,而不是预期的640x480图像。在我发现bug时编写的代码中,它有时返回正确的大小,有时返回错误的大小,因此它看起来像一个竞态条件。这个微小的不正确的尺寸看起来也与我在相机预览窗口中看到的缩略图的大小非常相似。

相关代码如下:

virtual_camera = RDK。Cam2D_Add(item_object=station, cam_params="FOCAL_LENGTH=1.93 FOV=65.5 SIZE=640x480")

文件名= " / tmp / bug.png "
RDK.Cam2D_Snapshot (file_save_img =文件名)

我用的是Ubuntu 22.04, RoboDK v5.4.1(64位)

完整的代码:


代码:
#!/usr/bin/python3

从robolink导入* # API与RoboDK通信
From robodk import * # robodk robotics toolbox

RDK = Robolink ()

def clear_station (rdk):
station_name = "相机错误"

#如果已经有这个脚本的站点,删除它
站= rdk.Item (station_name)
试一试:
station.Delete ()
robolink除外。InputError e:
通过

站= rdk.AddStation (station_name)
返回车站

站= clear_station (RDK)
virtual_camera = RDK。Cam2D_Add(item_object=station, cam_params="FOCAL_LENGTH=1.93 FOV=65.5 SIZE=640x480")

文件名= " / tmp / bug.png "
RDK.Cam2D_Snapshot (file_save_img =文件名)

当我们谈到这个话题时,API文档中所有拼写错误的“lengt”(例如。,“FOCAL_LENGTH”而不是“FOCAL_LENGTH”)为我们实际应该使用的相机设置字符串,还是库实际上期望正确的拼写?


附加文件 图像(年代)

你好,

为了让快照工作,必须打开预览窗口——这需要一些时间。
在Cam2D_Add之后添加一个暂停(0.1)应该可以解决你的问题。

你可以使用正确的或拼写错误的拼写。我会用正确的拼写更新文档。
谢谢你指出这一点。
了解RoboDK及其功能的有用信息,请访问我们的2022世界杯32强赛程表时间 通过观看我们的教程YouTube频道
# 3
谢谢您的快速回复。我在Cam2D_Add()之后添加了3秒的时间。sleep(3),它仍然持续生成一个小图像。快照窗口也保持较小。也许是因为侏儒不接受尺寸提示?但是SNAPSHOT参数不是应该使保存的图像大小独立于预览窗口吗?设置为640x480也没有帮助。
# 4
我没有在Windows上体验过这个,我会尽快在Ubuntu上测试这个。

实际上,SIZE是相机本机传感器的大小,而SNAPSHOT是通过套接字检索时保存在磁盘上的输出大小。

直接通过API检索图像时,图像的大小是多少?

代码:
bytes_img = RDK。Cam2D_Snapshot (cam_item”)
Nparr = np.frombuffer(bytes_img, np.uint8)
img =简历。imdecode (nparr cv.IMREAD_COLOR)
了解RoboDK及其功能的有用信息,请访问我们的2022世界杯32强赛程表时间 通过观看我们的教程YouTube频道
# 5
你好,

WINDOWFIXED和SNAPSHOT=640x480参数没有解决这个问题。

我注意到在Cam2D_Add上添加断点时不存在这个问题。在clear_station调用之后添加一个暂停可以解决这个问题。在不先删除摄像机的情况下向工作站添加摄像机时,不会出现此问题。下面的代码为我工作。

代码:
#!/usr/bin/python3

从robolink导入* # API与RoboDK通信
From robodk import * # robodk robotics toolbox

RDK = Robolink ()

def clear_station (rdk):
station_name = "相机错误"

#如果已经有这个脚本的站点,删除它
站= rdk.Item (station_name)
试一试:
station.Delete ()
robolink除外。InputError e:
通过

站= rdk.AddStation (station_name)
返回车站

站= clear_station (RDK)
暂停(0.3)
virtual_camera = RDK。Cam2D_Add(item_object=station, cam_params="FOCAL_LENGTH=1.93 FOV=65.5 SIZE=640x480")

文件名= " / tmp / bug.png "
RDK.Cam2D_Snapshot (file_save_img =文件名)
了解RoboDK及其功能的有用信息,请访问我们的2022世界杯32强赛程表时间 通过观看我们的教程YouTube频道




浏览此线程的用户:
1客人(年代)