Is there anyway to do this in Qgis, R, Arcmap?
Try using Image Classification in the Spatial Analyst extension (in ArcMap).
Open the Image Classification toolbar, you will create training samples of roofs. In the Training Sample Manager, the training samples will list and can be renamed to what you are identifying (ie. rooftops). Sample a few different colored rooftops, and then merge the training samples into one in the manager window.
Use the Maximum Likelihood Classification tool or Interactive Surpervised Classification tool to classify the image. Look over the results to see if you need to reclassify the image samples to clean up the result (if something else in the imagery appears to be the same color as the rooftops, the tool can misclassify).
This tool can be helpful but is only as good as it's inputs and may take a few tries. Hope this helps.