正如標題所示,我在使用 opencv 時遇到問題,尤其是在使用 imread 功能時。這是我要運行的簡單程式
#include<iostream>
#include<opencv2/imgproc.hpp>
#include<opencv2/imgcodecs.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main(){
std::string path = "Images/NewYork.jpg";
Mat img = imread(path);
imshow("image", img);
waitKey(0);
return 0;
}
我的 CMakeLists 看起來像這樣
cmake_minimum_required(VERSION 3.23)
project(Convolution)
find_package( OpenCV REQUIRED )
set(CMAKE_CXX_STANDARD 14)
include_directories(
${OpenCV_INCLUDE_DIRS} )
add_executable(Convolution main.cpp)
target_link_libraries(Convolution
${OpenCV_LIBS})
我收到的訊息錯誤是:[WARN:[email protected]] global /opt/opencv/modules/imgcodecs/src/loadsave.cpp (244) findDecoder imread_('Images/NewYork.jpg'): can't打開/讀取檔案:檢查檔案路徑/完整性終止在拋出“cv::Exception”實體后呼叫
什么():OpenCV(4.6.0-dev)/opt/opencv/modules/highgui/src/window.cpp:969:錯誤:(-215:斷言失敗)size.width>0 && size.height>0 in功能'imshow'
我知道第二個錯誤是由于 Mat 物件是空的,這是因為我的 imread 函式不起作用。我已經檢查了我的路徑是否正確,我將影像保存在不同的目錄中,我檢查了拼寫,我檢查了evertyhing,但我無法讓它作業。請幫忙。
uj5u.com熱心網友回復:
您應該始終cv2.imread()通過查看它是否回傳NULL資料來檢查您是否成功。
您可能在 IDE 中運行,或者從不同的目錄運行,因此請考慮使用getcwd()并列印結果,以便您知道Images目錄的相對路徑從哪里開始。
uj5u.com熱心網友回復:
你的路徑很可能仍然是錯誤的。首先嘗試使用絕對路徑,然后檢查您的行程的作業目錄實際上是什么(除錯時,這可能與您的 main.cpp 相同)。
如果您完全堅持這一點,請嘗試為更改撰寫影像(創建 cvMat 并使用 imwrite)。然后看看它出現在哪里。
如果您想使用相對路徑(這很有意義),我建議您使用一種"./Images/NewYork.jpg"語法來使其更清晰。
uj5u.com熱心網友回復:
嘗試將完整路徑替換為縮短路徑。
例如)“D://images//example.jpg”
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/515000.html
標籤:C opencv小路
下一篇:cv2等待輸入取決于先前的輸入
