Animate camera between LookAt targets

Hi,
I’m trying to smoothly animate the camera between different LookAt targets, but am having trouble doing so. I’m quite confused by the usage of RotateTowards, which doesn’t appear to be like LookAt over time, as I’d hoped, but rather a function for rotating vectors. Is there a simple way to rotate towards a LookAt target instead of jumping straight to it?

EDIT:
I have also tried basing something on the SmoothLookAt script in Standard Assets. I replaced my LookAt line with:

Quaternion rot = Quaternion.LookRotation(chosen.transform.position - myCamera.transform.position);
myCamera.transform.rotation = Quaternion.Slerp(player.transform.rotation, rot, Time.deltaTime * 2);

Which sort of works, but it makes the camera jump and skip like crazy.

To be sure of smooth movement, you need to get a fixed start and end rotation and slerp between them based on elapsed time:-

Quaternion rot1 = transform.rotation;2
Quaternion rot2 = Quaternion.LookRotation(chosen.transform.position - myCamera.transform.position); 
float startTime = Time.time;
float duration = 2.0f;
   ...

function Update() {
   float elapsed = Time.time - startTime;
   myCamera.transform.rotation = Quaternion.Slerp(rot1, rot2, elapsed / duration);
}

You can also do this kind of thing quite neatly with a coroutine in many cases.