Get position of the first solid crossing limits line of a camera
Ignoring other object's which might be located between the mesh and the ray origin you can use the object's ray_cast method:

If there are multiple mesh objects, you might simply iterate over the objects, picking the one yielding the closest intersection point.

import bpy
from mathutils import Vector

cam = bpy.data.objects['Camera']
group = bpy.data.groups['Group']

min = (cam.data.clip_end, None, None)
for obj in group.objects:
    v0 = obj.matrix_world.inverted() * \
         cam.matrix_world.translation

    v1 = obj.matrix_world.inverted() * \
         cam.matrix_world * \
         Vector((0.0, 0.0, -cam.data.clip_end))

    success, location, normal, index = obj.ray_cast(v0, v1)
    if index != -1:
        mag = (obj.matrix_world * (location - v0)).magnitude
        if mag &lt; min[0]:
            min = (mag, obj, location) 

#set the cursor to the intersection point
if min[1]:
    bpy.context.scene.cursor_location = min[1].matrix_world * min[2]