gpt4 book ai didi

c++ - Opencv 视频帧不显示 Sobel 输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:06 25 4
gpt4 key购买 nike

这是来自 Opencv video frame giving me an error我想我关闭了它,我是 Stackoverflow 的新手。

下面是我试图查看其 Sobel 边缘图像的代码。然而,程序运行但输出只是一个灰色屏幕,如果我将鼠标悬停在光标上,光标就会消失。有人看到错误吗?还是对我使用的数据结构有误解

IplImage *frame, *frame_copy = 0;

// capture frames from video
CvCapture *capture = cvCaptureFromFile( "lightinbox1.avi");
//Allows Access to video propertys
cvQueryFrame(capture);

//Get the number of frames
int nframe=(int) cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);

//Name window
cvNamedWindow( "video:", 1 );

//start loop
for(int i=0;i<nframe;i++){
//prepare capture frame extraction
cvGrabFrame(capture);
cout<<"We are on frame "<<i<<"\n";
//Get this frame
frame = cvRetrieveFrame( capture );
con2txt(frame);
frame_copy = cvCreateImage(cvSize(frame->width,frame->height),IPL_DEPTH_8U,frame->nChannels );
//show and destroy frame
cvCvtColor( frame,frame,CV_RGB2GRAY);

//Create Sobel output
frame_copy1 = cvCreateImage(cvSize(frame->width,frame->height),IPL_DEPTH_16S,1 );
cvSobel(frame_copy,frame_copy1,2,2,3);

cvShowImage("video:",frame_copy1);
cvWaitKey(33);}
cvReleaseCapture(&capture);

最佳答案

在这种情况下,我认为这是因为您创建的目标图像的深度与原始图像不同:

frame_copy1 = cvCreateImage(cvSize(frame->width,frame->height),IPL_DEPTH_16S,1 );

你应该这样做:

frame_copy1 = cvCreateImage(cvSize(frame->width,frame->height),IPL_DEPTH_8U,1 );

无论如何,this post显示了一个使用 cvSobel 的示例。

关于c++ - Opencv 视频帧不显示 Sobel 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8256443/

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