Have you tried passing `:none` in the argument list. I find that PyCall does the correct conversion on the symbol.
On Friday, June 17, 2016 at 11:42:32 AM UTC-7, I Ce wrote: > > I am using PyCalland @pyimport cv2 to implement an OpenCV > feature-matching program in Julia. > > > I have an example of the code I want to use in *Python* (see *Brute-Force > Matching with SIFT Descriptors and Ratio Test* in this link: > http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.html > for > the full Python code.) > > > Everything up to the point of drawMatchesKnn() works fine, but I have > issues with the outImg argument when converting to Julia. > > > Documentation for drawMatchesKnn() is pasted below: > (and can also be found here: > > http://docs.opencv.org/3.0-beta/modules/features2d/doc/drawing_function_of_keypoints_and_matches.html#drawmatches > > > Python: cv2.drawMatchesKnn(img1, keypoints1, img2, keypoints2, > matches1to2[, outImg[, matchColor[, singlePointColor[, matchesMask[, > flags]]]]]) → outImg > > Parameter description: > > - img1 – First source image. > - keypoints1 – Keypoints from the first source image. > - img2 – Second source image. > - keypoints2 – Keypoints from the second source image. > - matches1to2 – Matches from the first image to the second one, which > means that keypoints1[i] has a corresponding point in > keypoints2[matches[i]] . > - outImg – Output image. Its content depends on the flags value > defining what is drawn in the output image. See possible flags bit values > below. > - matchColor – Color of matches (lines and connected keypoints). If > matchColor==Scalar::all(-1) , the color is generated randomly. > - singlePointColor – Color of single keypoints (circles), which means > that keypoints do not have the matches. If > singlePointColor==Scalar::all(-1) , the color is generated randomly. > - matchesMask – Mask determining which matches are drawn. If the mask > is empty, all matches are drawn. > - flags – Flags setting drawing features. Possible flags bit values > are defined by DrawMatchesFlags. > > As you can see from the sample program, the drawMatchesKnn() line in > Python would look like this: > img3 = cv2.drawMatchesKnn(train,kp1,query,kp2,good,None,flags=2) (the key > argument is argument 6, specified as "None") > > > I'm having problems because I don't really know what an equivalent, > working example in Julia would be. > > > > I tried this: > img3 = cv2.drawMatchesKnn(train,kp1,query,kp2,good) > > And got this error: (so arg6 is required) > > LoadError: PyError (:PyObject_Call) <type 'exceptions.TypeError'> > TypeError("Required argument 'outImg' (pos 6) not found",) > > > > This: (passing the scalar value 0, which worked for the method > drawKeyPoints() in another program) > img3 = cv2.drawMatchesKnn(train,kp1,query,kp2,good,0,flags=2) > > and got this error: > > LoadError: PyError (:PyObject_Call) <type 'exceptions.SystemError'> > SystemError('NULL result without error in PyObject_Call',) > > > > and this: > img3 = cv2.drawMatchesKnn(train,kp1,query,kp2,good,nothing,flags=2) > > and got this error: > > LoadError: PyError (:PyObject_Call) <type 'exceptions.SystemError'> > SystemError('NULL result without error in PyObject_Call',) > > > Seems tricky to me because None in Python and nothing in Julia do not > appear to behave the same way. > > > Anything else I could try? What could the problem be, and how can I fix it? > > > Thanks for reading! > Any help is much appreciated. >
