gpt4 book ai didi

c++ - 使用 OpenCV 和 C 裁剪图像

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:43 24 4
gpt4 key购买 nike

您好,我正在尝试调试 C++/C 开发人员代码,他给我们写了一个 dll,我们在 adobe native 扩展中使用它基本上使用网络摄像头网格拍照,并在进行一些人脸检测后假设裁剪图像并将它们写入光盘。

但应用程序总是在这一行挂起并最终崩溃:

smallFrame = image(Rect(x, y, CROPPING_WIDTH, CROPPING_HEIGHT));

我通过围绕它抛出一个 try/catch 将它缩小到这一行,它吐出的异常不是很有帮助,它只是说 ????????n 作为异常。

像这样:

try

{

smallFrame = image(Rect(x, y, CROPPING_WIDTH, CROPPING_HEIGHT));

}

catch(exception ex)

{

wsprintf (str, L"Exception Occured during Face Found : %s", ex.what());

WriteLogFile(str);

smallFrame = frame;

}

这是整个方法:

Mat cropFaceFrame( Mat frame)

{

std::vector<Rect> faces;

Mat frame_gray, smallFrame;

int height = 0;

unsigned index, i;



cvtColor( frame, frame_gray, CV_BGR2GRAY );



equalizeHist( frame_gray, frame_gray );



face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(60, 60));



index = faces.size();

wsprintf (str, L



for (i = 0; i < faces.size(); i++ )

{


if (height < faces[i].height)

{

height = faces[i].height;

index = i;



}

}

Mat image(frame);

int maxRight, maxDown;

maxRight = IMAGE_WIDTH-CROPPING_WIDTH -1;

// right margin

maxDown = IMAGE_HEIGHT-CROPPING_HEIGHT-1;

// down margin

if (index == faces.size())

{

// crop the center part if no face found



try

{

smallFrame = image(Rect(maxRight/2, maxDown/2, CROPPING_WIDTH, CROPPING_HEIGHT));

}

catch(exception ex)

{



smallFrame = frame;

}


}

else

{



int x, y;

x = faces[index].x - (CROPPING_WIDTH-faces[index].width)/2;



if (x < 0) x = 0;

else if (x > maxRight) x = maxRight;



y = faces[index].y - (CROPPING_HEIGHT-faces[index].height)/3;



if (y < 0) y = 0;

else if (y > maxDown) y = maxDown;


try

{

smallFrame = image(Rect(x, y, CROPPING_WIDTH, CROPPING_HEIGHT));

}

catch(exception ex)

{

wsprintf (str, L

"Exception Occured during no Face Found : %s", ex.what());

WriteLogFile(str);

smallFrame = frame;

}



}



return smallFrame;

}

最佳答案

smallFrame = image(Rect(x, y, CROPPING_WIDTH, CROPPING_HEIGHT));

* 固定的 CROPPING_WIDTH 或 HEIGHT 是行不通的。你必须检查,如果你的 Rect 没有部分结束在图像之外,即如果 x+CROPPING_WIDTH < img.cols-1

关于c++ - 使用 OpenCV 和 C 裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18188872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com