Alexey,
Thanks for the quick response and you hit the nail on the head, I had already converted into the internal coordinate system before passing it on cam.project, which was the problem.
I have a related question. I am writing a script to understand the projections of my dense cloud points on all images. I see two possibilities when I use cam.project on a 3D dense cloud point: a) the projection either lies within the image, in which case it is a legitimate projection or b) it lies outside, in which case it is not a real projection and can be disregarded.
But, I see that sometimes there is a third outcome: cam.project returns nothing. Is this expected behavior for this method? When does this happen?