日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++?OpenCV裁剪圖片時發生報錯的解決方式_C 語言

作者:一low永逸 ? 更新時間: 2022-08-31 編程語言

從相機獲取圖像時直接處理會報錯,讀取本地視頻不會報錯

原代碼

g_mvCamera.GetImage(m_matCameraFrame);
			
//開始OCR
OCRImg();

將從相機捕獲的幀直接imwrite進本地,再在OCR中imread讀取本地路徑下的圖片,報錯消失

g_mvCamera.GetImage(m_matCameraFrame);
			
imwrite("img6.bmp", m_matCameraFrame);
//開始OCR
OCRImg();

對本地視頻進行裁剪不會報錯,對相機實時獲取的幀進行裁剪會報錯

原代碼(部分)

 		g_mvCamera.GetImage(frame0);
		
		//對視頻進行區域截取,選其中一部分進行處理,左上角起始坐標以及整個新圖片的大小
		Rect rect; 
		rect.x = 0;
		rect.y = 260;
		rect.height = 680;
		rect.width = 1260;
		frame = Mat(frame0, rect);

運行結果

?仔細看一下變量窗口, 會發現是由于有時候程序并沒從相機中獲取到frame就對frame0進行傳值,就直接報錯了

?所以修改代碼,使用do while循環,確保frame0獲取到之后,再進行下一步處理

        do {
			g_mvCamera.GetImage(frame0);
		} while (frame0.empty());
		
		//對視頻進行區域截取,選其中一部分進行處理,左上角起始坐標以及整個新圖片的大小
		Rect rect; 
		rect.x = 0;
		rect.y = 260;
		rect.height = 680;
		rect.width = 1260;
		frame = Mat(frame0, rect);

總結

原文鏈接:https://blog.csdn.net/weixin_42292586/article/details/121741608

欄目分類
最近更新