![](/img/trans.png)
[英]Opencv PCA Microsoft C++ exception: 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.