我的学生给我一个答案:
_, contours, _ = cv2.findContours(blue_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
x, y, w, h = cv2.boundingRect(contours[0])
cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)
现在我想找出x和y在maxima中的含义,并给出反馈。例如," x是正确的,但y不正确"。我知道,如果学生将答案列为清单,我可以这样做:
x=4 and y=3
有没有办法将此solve([x=4, y=3], [x,y])
表达式转换为列表,或者让maxima直接找出and
和x
是直接的?
答案 0 :(得分:0)
如果输入表达式是字符串,则可以使用parse_string
:
a: "x=3 and y = 4"$
inpart(parse_string(a),1);
(%o1) x = 3
exp: map(lambda([i],inpart(parse_string(a),i)), [1,2]);
(%o2) [x = 3, y = 4]
solve(exp, [x,y]);
(%o3) [[x = 3, y = 4]]
答案 1 :(得分:0)
我假设您可以通过parse_string
或其他方式从输入中获取Maxima表达式。
让e
成为表达式。然后subst("and"="[", e)
返回一个表达式,其中包含运算符"["
(即列表),而不是"and"
。
答案 2 :(得分:0)
另一种方法是使用split
:
str:"x=4 and y=3";
spl:split(str,"and");
>>> ["x=4 "," y=3"]
eq:map(parse_string,spl);
>>> [x=4,y=3]