我知道这个问题已被多次询问,我试图实现他们的答案,但它在我的代码中引起了异常。
操作系统:Windows 7 OpenCV:2.4.9
这是我的代码:
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
VideoCapture cap(0); //capture the video from webcam
if ( !cap.isOpened() ) // if not success, exit program
{
cout << "Cannot open the web cam" << endl;
return -1;
}
Mat imgHSV;
_sleep(100); //give the camera a chance to wake up
while (true)
{
Mat imgOriginal;
bool success = cap.read(imgOriginal);
if (!success) //if not success, break loop
{
cout << "Cannot read a frame from video stream" << endl;
break;
}
cvtColor(imgOriginal, imgHSV, COLOR_BGR2HSV); //Convert the captured frame from BGR to HSV
vector<Mat> hsv_planes;
split( imgHSV, hsv_planes );
//hsv_planes[0] // H channel
//hsv_planes[1] // S channel
//hsv_planes[2] // V channel
imshow(thresholded_window, hsg_planes[2]); //show the S channel
if (waitKey(30) == 27) //wait for 'esc' key press for 30ms. If 'esc' key is pressed, break loop
{
cout << "esc key is pressed by user" << endl;
break;
}
}
return 0;
}
分割线上抛出异常:&#34; TrackColour.exe中0x62B978C9(opencv_core249.dll)的未处理异常:0xC0000005:访问冲突写入位置0xFEEEFEEE。&#34;
答案 0 :(得分:1)
我想出了我的问题,这种情况发生在其他任何人身上。
在VS中,我正在进行调试构建,但是我正在链接到opencv的非调试版本。请注意我的错误消息opencv_core249,它应该是opencv_core249d(注意&#39; d&#39;)。我更新了我的CV链接以使用调试库,它可以工作。
其他opencv调用使用错误的库执行得很好,某些东西必须是split的唯一。