I suppose it depends on the size of the site, and how much time and resources you have. I have seen this done many ways.
1. Aerial photos. If you get a very high resolution photo, you can perhaps use software like Image J to do this.
2. Random canopy cover "spotting." You could use a frame held at a fixed distance from your eyes, and estimate % canopy cover for each of a set number of random viewpoints, looking upwards. Then average these.
3. Linear transects. Set a series of transects and then record when vegetation cover begins and ends along the line, and then use that to estimate % cover.
Many other methods exist -- these are just some I have seen used in the field.
To estimate cover by sampling, I use linear transects (100 meters, sampling at every meter), as M. Patrick Griffith mentioned above. There are some excellent videos on YouTube that explain the methods: https://www.youtube.com/watch?v=TXV5DxEaSR4 and https://www.youtube.com/watch?v=NhcNjikpApg.
You may use image processing technique is you have a remote sensing scene of your study area. For more information, check VegMeasure software at http://www.vegmeasure.org/
There are lots of ways (as mentioned above), but the appropriate method really depends on the scale of interest. If you care mostly about medium scale patterns, perhaps 30-m Landsat imagery would be a useful approach. If you care about tree canopies, aerial photography could work. If you are focused on herbaceous cover, something like line transects or vegetation plots will be required and you will need sufficient sampling to account for fine-scale spatial heterogeneity.
Anyway, I think defining the relevant scale for your question will help you determine the best route forward.