I solved this using
bool bSingleFrame = true;
int main{
if (bSavePic == true)//distance<100
{
if (bSingleFrame == true)
{
putText(cameraFeed,"Saving Image",Point(50,70),1,1,Scalar(0,0,255),1);
Mat saveImage;
capture >> saveImage;
stringstream ssFileName; //string stream initialised through each passing of while loop
ssFileName << "Image-" << c << ".jpg"; //File name based on frame captured 0++
ssFileName >> sFileName;
if(!saveImage.empty()) //check if frame captured is stored in matrix
{
cout << "Frame captured." << endl; //if data in frame cout
imwrite(sFileName.c_str(), saveImage); //save frame
saveImage.release();
c++;
if (bSavePic == true) //if distance still <100
{
bSingleFrame = false;
}
Mat readImage;
readImage = imread(sFileName.c_str(),CV_LOAD_IMAGE_COLOR);
imshow(windowName4, readImage); //show captured frame in new window
}else{
cout << "Error, could not capture frame to save." << endl;
}//if(!saveImage.empty())
}//bSingleFrame
}//ifbSavePic
if (bSavePic == false)
{
bSingleFrame = true;//if distance back >100 can capture another frame
}
}
Note this is only a snippet. But it does what was needed.