我正在编写一个精简版本的python,即micro。
我正在做一些图像处理,并试图找到从一个名为"find_line_segments“的方法返回的最长的行(它进行Canny Edge和Hough line转换)。
但!我一直在犯错误。
代码
rl = max(img.find_line_segments(roi = r_r, threshold = 1000, theta_margin = 15, rho_margin = 15, segment_threshold = 100), key = lambda x: x.length())
if rl is not None:
if rl[6] > 0 :
img.draw_line(rl.line(), color = 155)
print("RL")
print(rl)错误:
Traceback (most recent call last):
File "<stdin>", line 77, in <module>
ValueError: arg is an empty sequence
MicroPython d23b594 on 2017-07-05; OPENMV3 with STM32F765
Type "help()" for more information.这个错误指向线if rl is not None: ..。我不明白它为什么会造成错误。如果max()函数不返回值(如果找不到一行),则"if语句“永远不会执行。
我有什么不明白的?
编辑:
无意中删除了一些代码。
发布于 2017-07-19 21:15:56
尝试将该max(img.find_line_segments(...)...)语句分离为两个语句,并在使用max函数之前测试find_line_segments的结果是否为任何内容。听起来像max函数是抛出异常的原因:
# Dummy function
def find_line_segments():
return []
max_segment = max(find_line_segments())给出在空序列上尝试使用max()的异常:
Traceback (most recent call last):
File "C:\Users\ayb\Desktop\t (3).py", line 8, in <module>
max_segment = max(get_line_segments())
ValueError: max() arg is an empty sequence这样做是为了避免出现异常。
segments = find_line_segments()
if segments:
max_segment = max(segments)https://stackoverflow.com/questions/45200793
复制相似问题