配置OPENCV中出現的指針越位問題

原因:圖片路徑

//一段簡單的OPENCV測試程序 
#include <iostream>  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  

using namespace cv;
using namespace std;

int main() {
	// 讀入一張圖片(遊戲原畫)    
	Mat img = imread("1.jpg");
	// 創建一個名爲 "遊戲原畫"窗口    
	namedWindow("遊戲原畫");
	// 在窗口中顯示遊戲原畫    
	imshow("遊戲原畫", img);
	// 等待6000 ms後窗口自動關閉    
	waitKey(6000);
}

卻出現以下的報錯。
在這裏插入圖片描述

可能是imread(“pic.jpg”);的路徑問題,把路徑打全。而且注意左右斜槓,如果我們將imread(“C:\Users\Administrator\Desktop\圖庫\a.jpg”)改爲imread(“C:\Users\Administrator\Desktop\圖庫\a.jpg”)或者imread(“C:/Users/Administrator/Desktop/圖庫/a.jpg”)問題就解決了。

最後查了一下資料是這樣解釋的:
在C裏面,輸出字符串時,如果想輸出一個換行,那就要加上’\n’這個標誌,類似的,輸出一個TAB,就加上’\t’,也就是說,反斜槓("")這個符號會把跟在它後面的字符結合起來轉義成其它字符。根據這個原理,如果想輸出雙引號(’"’),就需要輸入’"’,這樣纔會將包含了雙引號的字符串正確的寫入內存中。那麼如果想輸入一個反斜槓呢?很簡單,只要敲’\'就可以了。
如果"C:\Windows\System"這個路徑字符串交給C編譯器編譯,實際寫入內存的字符串並沒有包含反斜槓"",甚至緊跟在反斜槓後面的字母也一起被轉義成了其它的字符,再次調用的話勢必會出問題。

//修改代碼如下
int main() {
	// 讀入一張圖片(遊戲原畫),路徑設置爲絕對路徑  
	Mat img = imread("G:/Workspace/VisualStudioWorkspace/TestOpencv/testopencv/1.jpg");
	//絕對路徑也可以如下設置
	//Mat img = imread("G:\\Workspace\\VisualStudioWorkspace\\TestOpencv\\testopencv\\1.jpg");
	// 創建一個名爲 "遊戲原畫"窗口    
	namedWindow("遊戲原畫");
	// 在窗口中顯示遊戲原畫    
	imshow("遊戲原畫", img);
	// 等待6000 ms後窗口自動關閉    
	waitKey(6000);
	//cout << "heloo" << endl;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章