ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Iterate points for OpenCV's Line function

asked 2011-07-02 06:37:39 -0500

Kirielson gravatar image

I'm trying to iterate from two tuples to create a line connection previous points to currents points.

    for (x,y) in currFeatures and (px,py) in self.prev_draw_features:
            cv.line(new_image, (px,py),(x,y),cv.RGB(125, 20,200),5)

Which then leads me to this error:

[ERROR] [WallTime: 1309631642.294530] bad callback: <bound method="" cached_subscriber.callback="" of="" <__main__.cached_subscriber="" instance="" at="" 0x2bbb290="">> Traceback (most recent call last): File "/opt/ros/diamondback/stacks/ros_comm/clients/rospy/src/rospy/", line 563, in _invoke_callback cb(msg) File "**", line 70, in callback for (x,y) in currFeatures and (px,py) in self.prev_draw_features: NameError: global name 'px' is not defined

Is it possible to iterate between two tuples at the exact same time, or will I need to construct a new variable to iterate between the elements. Keep in mind that the tuples may not be equal (which probably negates my "and" statement.


edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2011-07-02 13:20:16 -0500

fergs gravatar image

updated 2011-07-02 13:22:42 -0500

What you probably want is:

for ((x,y), (px,py)) in zip(currFeatures, self.prev_draw_features):
        cv.line(new_image, (px,py),(x,y),cv.RGB(125, 20,200),5)
edit flag offensive delete link more


Okay I did try that but then I got the error: File "****", line 73, in callback cv.line(new_image, (px,py),(x,y),cv.RGB(125, 20,200),5) TypeError: <unknown> is not a numpy array Would I need to first extract all of the information out then re-insert it in?
Kirielson gravatar image Kirielson  ( 2011-07-02 14:23:21 -0500 )edit
How do you get "new_image"? I think that is the only parameter that has to be a numpy array.
fergs gravatar image fergs  ( 2011-07-03 04:56:16 -0500 )edit
I get new image from a live feed camera.
Kirielson gravatar image Kirielson  ( 2011-07-05 01:46:57 -0500 )edit
Okay I got it fixed thanks!
Kirielson gravatar image Kirielson  ( 2011-07-05 05:33:40 -0500 )edit
Could you post how you fixed it for the benefit of future users?
fergs gravatar image fergs  ( 2011-07-05 08:20:55 -0500 )edit
Yeah I will.
Kirielson gravatar image Kirielson  ( 2011-07-06 07:10:48 -0500 )edit

answered 2011-07-06 07:15:31 -0500

Kirielson gravatar image

I fixed it with two things,

First it's cv.Line not cv.line

Second of all, this is how you would want to do the listing:

for i in range(min(len (currFeatures), len (self.prev_draw_features))): # Find out which index is shorter
    currpoint = currFeatures[i]
    currpoint = (int(currpoint[0]), int(currpoint[1])) #Also code out the same setup for prev_draw_features
    cv.Line(new_image, currpoint, prevpoint, 123, 5)
edit flag offensive delete link more

Question Tools


Asked: 2011-07-02 06:37:39 -0500

Seen: 1,578 times

Last updated: Jul 06 '11