1

OpenCV で特定の場所にボックスを描画して、そこでトリミングできるようにしようとしています。現在、関心のある領域の周りに recatnge を描画しようとしていますが、mouseEvent() の drawBox() でエラーが発生しています。以下は私のコードで、以下はエラー出力です。どうすればこれを機能させることができますか? 私が探しているところには、古い IplImage やその他の廃止された機能があります。

#include stuff

using namespace cv;

bool isDrawing = false;
Point start, end;

void drawBox(Point start, Point end, Mat& img){
Scalar color = (0,255,0);
rectangle(img, start, end, color, 1, 8, 0);
return;
}

void mouseEvent(int evt, int x, int y, int flags, void* param){
if(isDrawing){
    if(evt==CV_EVENT_LBUTTONUP){
        printf("up %d %d\n",x,y);
        isDrawing = false;
        end.x = x;
        end.y = y;
        drawBox(start, end, (Mat&) param);
        return;
    }
}
else{
    if(evt==CV_EVENT_LBUTTONDOWN){
        printf("down %d %d\n",x,y);
        isDrawing = true;
        start.x = x;
        start.y = y;
        return;
    }
}
}

int main(){

Mat feed = imread("C:/Users/Timo/Desktop/image1.jpg", CV_LOAD_IMAGE_GRAYSCALE);

namedWindow("Feed");
imshow("Feed", feed);

cvSetMouseCallback("Feed", mouseEvent, &feed);

waitKey(0);

return 1;
}

コンソール

down 293 26
up 520 217
OpenCV Error: Assertion failed <cn <= 4> in unknown function, file ..\..\..\src\opencv\modules\core\src\matrix.cpp, line 845

現れる

Unhandled exception at 0x80000000 in opencv_project.exe: )xC0000005: Access violation.

出力ログ

First-chance exception at 0x7796c41f in opencv_project.exe: Microsoft C++ exception: cv::Exception at memory location 0x002de9b4..
Unhandled exception at 0x7796c41f in opencv_project.exe: Microsoft C++ exception: cv::Exception at memory location 0x002de9b4..
4

1 に答える 1