Opencv 4.5.4 with StreamCam Plus not getting expected FPS

NOTE: forum is having a fit when I attempt to add media files via there link or copy paste…
Orginal (and properly formatted post) stack overflow post is at: frame rate - opencv 4.5.4 with StreamCam Plus not getting expected FPS - Stack Overflow

I am using a MSI GS66 Stealth with a logitech StreamCam Plus and openCV_4.5.4. The code is below. For some reason I am only able to get a max of ~30 fps despite setting the fps to 60. It should be noted that I can slow the fps to say 5 fps as shown in Figure 2 below…

According to logitech the streamCam Plus supports 60fps while in MJPEG mode, see Figure 2… I believe I have set this properly in the code via a call to:

image

Figure 1: supports 60fps while in MJPEG format

Figure 2: has 5 fps and loops at 5 fps

Additionally, I have tried to change the cameras settings in both the Logitech Capture and Logi Tune software. Currently, the camera is set to completely manual via the Logi tune software
#include<opencv2/opencv.hpp>//OpenCV header to use VideoCapture class//
#include

using timer = std::chrono::system_clock;
timer::time_point clock_cur;
timer::time_point clock_last;

using namespace std;
using namespace cv;

int main() {

	using fmilliseconds = chrono::duration<float, std::milli>;
	//Mat myImage(240, 320, CV_8UC1);//Declaring a matrix to load the frames//
	Mat myImage;
	namedWindow("Video Player");//Declaring the video to show the video//
	VideoCapture cap(1,CAP_DSHOW+0);//Declaring an object to capture stream of frames from default camera//
	if (!cap.isOpened()) { //This section prompt an error message if no video stream is found//
		cout << "No video stream detected" << endl;
		system("pause");
		return-1;
	}

	//setUseOptimized(true);

	float avgDur = 0;
	bool useShortWindow = true;
	int maxWindowSize = 10;
	int curWindowSize = 0;
	int loopCnt = curWindowSize;

	bool bVal = true;
	int fourcc = cv::VideoWriter::fourcc('M', 'J', 'P', 'G');
	cap.set(CAP_PROP_FOURCC, fourcc);

	int val = 0;
	int val2 = 0;

	cap.set(CAP_PROP_FRAME_HEIGHT, 240);
	cap.set(CAP_PROP_FRAME_WIDTH, 320);

	//cap.set(CAP_PROP_ZOOM, 125);
	//cap.set(CAP_PROP_FOCUS, 10);
	bVal = cap.set(CAP_PROP_FPS, 60);

	//cap.set(CAP_PROP_AUTOFOCUS, 2);


	clock_cur = timer::now();
	clock_last = clock_cur;

	while (true) { //Taking an everlasting loop to show the video//

		clock_cur = timer::now();

		cap >> myImage;
		//Mat imgBlur;
		//GaussianBlur(myImage, imgBlur, Size(7, 7), 0);
		//GaussianBlur(myImage, myImage, Size(7, 7), 0);
		//cvtColor(myImage, myImage, COLOR_BGR2GRAY);
		//cvtColor(imgBlur, imgBlur, COLOR_BGR2GRAY);

		//Mat image = myImage;
		//for (int y = 0; y < myImage.rows; y++)
		//{
		//    for (int x = 0; x < myImage.cols; x++)
		//    {
		//        //Get pixel value
		//        int pixelValue = (int)myImage.at<uchar>(y, x);
		//
		//        if (pixelValue < 60)
		//            pixelValue = 0;
		//        else if (pixelValue > 175)
		//            pixelValue = 255;
		//        else
		//            pixelValue = 128;
		//
		//        myImage.at<uchar>(y,x) = pixelValue;
		//
		//    }
		//}

		//if (myImage.empty()) { //Breaking the loop if no video frame is detected//
			//break;
		//}

		imshow("No Blur", myImage);//Showing the video//
		//imshow("Video Player", imgBlur);//Showing the video//

			fmilliseconds Duration = clock_cur - clock_last;

			val = cap.get(CAP_PROP_FRAME_WIDTH);
			val2 = cap.get(CAP_PROP_FRAME_HEIGHT);

			if (useShortWindow && loopCnt < maxWindowSize)
				curWindowSize = loopCnt;
			else
			{
				useShortWindow = false;
				curWindowSize = maxWindowSize;
			}

		if (curWindowSize > 1)
		{
			avgDur = avgDur / curWindowSize * (curWindowSize - 1) + Duration.count() / 1000 / curWindowSize;
			cout << to_string(val) << " : " << to_string(val2) << " : " << to_string(1 / avgDur) << "\n";
		}
		else
		{
			avgDur = Duration.count() / 1000;
			cout << to_string(val) << " : " << to_string(val2) << " : " << to_string(1 / Duration.count()) << "\n";
		}

		char c = (char)waitKey(1);//Allowing 25 milliseconds frame processing time and initiating break condition//
		//if (c == 27) { //If 'Esc' is entered break the loop//
		//    break;
		//}
		clock_last = clock_cur;
		loopCnt = useShortWindow ? loopCnt + 1 : maxWindowSize;
	}

	cap.release();//Releasing the buffer memory//
	return 0;
}

Certainly, I am missing something. Any help would be greatly appreciated.