gpt4 book ai didi

c++ - opencv 保存从网络摄像头捕获的图像

转载 作者:太空狗 更新时间:2023-10-29 21:01:53 25 4
gpt4 key购买 nike

当代码试图将图像保存在 HD 上时,我收到错误“SIGABRT ERROR”。

我在上一个 XCODE 上使用 MacBook Pro Mountain Lion 并且库重新配置得很好。

有人有解决方案或想法吗?

#include "cv.h"
#include "highgui.h"
#include <stdio.h>
using namespace cv;
// A Simple Camera Capture Framework
int main() {

CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY );
if ( !capture ) {
fprintf( stderr, "ERROR: capture is NULL \n" );
getchar();
return -1;
}
// Create a window in which the captured images will be presented
cvNamedWindow( "mywindow", CV_WINDOW_AUTOSIZE );
// Show the image captured from the camera in the window and repeat
while ( 1 ) {
// Get one frame
IplImage* frame = cvQueryFrame( capture );
if ( !frame ) {
fprintf( stderr, "ERROR: frame is null...\n" );
getchar();
break;
}
cvShowImage( "mywindow", frame );
// Do not release the frame!

if ( (cvWaitKey(10) & 255) == 's' ) {
CvSize size = cvGetSize(frame);
IplImage* img= cvCreateImage(size, IPL_DEPTH_16S, 1);
img = frame;
cvSaveImage("matteo.jpg",&img);
}
if ( (cvWaitKey(10) & 255) == 27 ) break;
}
// Release the capture device housekeeping
cvReleaseCapture( &capture );
cvDestroyWindow( "mywindow" );
return 0;
}

最佳答案

问题是您混合了指针语法。您正在创建一个新的 IplImageIplImage* img= cvCreateImage(size, IPL_DEPTH_16S, 1);但是在下一行中,当您覆盖指针 img 时,您会丢失此结构。与 frame .

导致你的 sigabrt 的代码是你发送一个指针到一个指针的地方 cvSaveImage("matteo.jpg",&img); .你不应该做 &img作为img已经是一个指针。以下是正确的:

cvSaveImage("matteo.jpg",img);

实际上你没有理由创建一个新的IplImage除非您想在将其保存到文件之前进行一些预处理。

我修改了你的if - 以下条款在我的电脑上运行良好:

if ( cvWaitKey(10) < 0 ) {
cvSaveImage("matteo.jpg",frame);
}

关于c++ - opencv 保存从网络摄像头捕获的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16980496/

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