This is going to be tough.
When you have a camera and a projector with an offset between them, there will be parallax between them, shifting the positions and projections of objects in the image plane.
You can compensate for shallow parallax to some degree by re-projecting your scene from a different point of view, but to do this you need to know the depth of each part of the surface away from the camera - something you don't normally get from a webcam.
If your objects are fairly flat and stay close to a fixed plane, you might be able to get away with pretending they're all in a flat plane, and re-project based on that.
For aligning the two, you can use the fact that one shines light and one sees light. Run a calibration step at the start of your session, where you use the projector to shine a calibration pattern onto the object plane.
(If you're using an IR camera to avoid feedback effects, take out the filter that blocks visible light for this step, or use the projected grid as a guide to make marks/place tokens that the camera can see)
For instance, you could project an image that's a dense, uniform grid of dots. By varying their intensity or flashing them one at a time, you can register which dot in the projected image corresponds to which dot in the captured image.
Now you have a series of point-to-point correspondences between coordinates in the camera's image plane and coordinates in the projection image plane.
You can run some fancy pose inference algorithms and lens distortion compensation algorithms on this to find an exact mapping between the two, but I'd suggest a more quick & dirty approach:
Construct a mesh, where each vertex's position corresponds to the position of one of your calibration points in projection space, and its texture coordinate corresponds to the position of that point in camera space. By displaying your edge-processed image feed on this mesh, using normal texture mapping, and capturing that appearance to shoot through the projector, you precisely match the distortion at every calibration point that was visible to the camera. The denser the mesh, the less interpolation error in-between.