簡體   English   中英

未處理的異常 Microsoft C++ 異常:cv::Exception at memory location

[英]Unhandled exception Microsoft C++ exception: cv::Exception at memory location

我剛開始使用 OpenCV。 我下載了 OpenCV 2.4.9,並安裝了 MSVS 2010。我的 Windows 是 X64。 我按照以下步驟操作:

一種。 在配置屬性下,單擊調試 -> 環境並復制粘貼:PATH=C:\\opencv\\build\\x86\\vc10\\bin

VC++ 目錄 -> 包含目錄並添加條目:C:\\opencv\\build\\include

C。 VC++ 目錄 -> 庫目錄並添加條目:C:\\opencv\\build\\x86\\vc10\\lib

d. Linker -> Input -> Additional Dependencies 並添加以下內容:

opencv_calib3d249.lib;opencv_contrib249.lib;opencv_core249.lib;opencv_features2d249.lib;opencv_flann249.lib;opencv_gpu249.lib;opencv_nonfree249.lib;opencv_highgui249.lib;opencv_highgui249.lib;opencv_highgui249.lib;opencv_highgui249.lib;opencv_highgui249.lib;opencv_highgui249.lib4opencv_lib4_open4_open4_open4.lib4open4_open4_open4.lib4open249.lib4open249.lib;opencv_flann249.lib;opencv_flann249.lib;庫;opencv_video249.lib;

我運行了以下代碼:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main() {
        // read an image
        cv::Mat image= cv::imread("img.jpg");
        // create image window named "My Image"
        cv::namedWindow("My Image");
         cv::waitKey(1000);
        // show the image on window
        cv::imshow("My Image", image);
        // wait key for 5000 ms
        cv::waitKey(50);
        return 1;
}

要獲取錯誤:

BTP1.exe 中 0x76d2b727 處的未處理異常:Microsoft C++ 異常:內存位置 0x003af414 處的 cv::Exception

我想這可能是因為 X64 和 x86 不匹配。 關於更改 a 中的條目。 到 PATH=C:\\opencv\\build\\ x64 \\vc10\\bin 並在 c 中。 到 C:\\opencv\\build\\ x64 \\vc10\\lib,我收到以下錯誤:

應用程序無法正確啟動 (0xc000007b)。 單擊確定關閉應用程序。

關於如何解決這個問題的任何提示?

這可能是因為您嘗試顯示的圖像是空的,可能是因為圖像不在正確的文件夾中。 要確認這一點,請將您的代碼更改為

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

#include <iostream>  // std::cout

int main() {
    // read an image
    cv::Mat image= cv::imread("img.jpg");

    // add the following lines
    if(image.empty())
       std::cout << "failed to open img.jpg" << std::endl;
    else
       std::cout << "img.jpg loaded OK" << std::endl;

    ...   // the rest of your code

解決了問題。 經過一些修補,我發現程序在發布模式下運行,而不是調試模式。

這是附加依賴項的問題。 沒有添加相同的調試版本。 (XYZ249d.lib)

要添加到其他答案中,如果您將彩色圖像傳遞到需要灰度圖像(即單通道)的工具中,也會經常發生這種情況。

您可以使用以下代碼將其轉換為灰度:

cv::Mat img_gray;
cv::cvtColor(img_color, img_gray, cv::COLOR_BGR2GRAY);

您可以使用以下代碼提取和組合各個顏色通道:

cv::Mat img_bgr[3];
cv::split(img_color, img_bgr);
//Note: OpenCV uses BGR color order
//img_bgr[0] = blue channel
//img_bgr[1] = green channel
//img_bgr[2] = red channel
cv::Mat img_gray = img_bgr[2] - img_bgr[1];  //laser line extraction is typically red channel minus green channel

我有一個類似的問題,我只需要給出圖像文件的路徑,例如 - D:\\image.png

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM