I want to develop software that can connect to a digital camera that is attached to my computer. The software will then control the camera so that it can. for example, take a picture or record a video.

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.
If this question can be reworded to fit the rules in the help center, please edit the question.

3

There's huge variety of cameras that will allow this, more information on what you want to shoot and price range would be helpful
–
Matt GrumMar 17 '11 at 20:39

Another key question: do you want "live view" on the computer screen, or is simply sending control commands sufficient?
–
mattdmMar 17 '11 at 22:47

The Canon 7D is capable of tethering and comes with a software for that. Connection via USB is necessary.
–
user11619Sep 15 '12 at 22:43

That is, by the way, the BEST tethered-shooting software I've ever found (after testing them all). Best of all, it's now FREE. It has more options than any other remote-shooting software available at any cost.

CHDK's experimental PTP mode has now been implemented as a default on all camera models (it seems). And while it is experimental and requires installing some additional software to the PC, it will also allow for tethered shooting and automatic off-loading of photos.

Do a search for PTP and PTPCamGUI on the CHDK Discussion Forum (link found on that Wiki page) to learn more.

It looks like the Cam4you software is a little bit outdated, at least from the officially supported cameras.
–
ysapApr 7 '11 at 3:53

Also it only supports Canon cameras. Not that Canon is bad, but if you're looking for an answer to the question here, that's worth knowing without clicking the link. It'd also be nice to hear why it is the best.
–
mattdmApr 6 '12 at 12:03

Most modern dSLRs from both canon and nikon offer this capability, and have developer programs offering an API to help you with your code. There's such a wide range of options that you probably should start with some other criteria first, and come back and filter by this one later in the decision making process.