- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在openCV中对视频帧进行帧比较。
假设视频文件中的第10帧和第100帧。
如果在主视频捕获循环中执行此操作,它将起作用。但是现在我想将其移动到专用方法(将IplImages作为输入)。
// MAIN CAPTURE LOOP
while(1) {
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, 10);
frame = cvQueryFrame(capture);
if (!frame) break;
cvShowImage("Window_1", frame);
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, 100);
nextFrame = cvQueryFrame(capture);
if (!nextFrame) break;
cvShowImage("Window_2", nextFrame); // THIS SHOWS ME TWO DIFFERENT FRAMES
// PASS THE IMAGES TO THE NEW METHOD
[self compareFrame: frame withFrame: nextFrame]);
char c = cvWaitKey(5);
if(c==27) {
NSLog(@"ESC pressed!");
break;
}
- (int) compareFrame: (IplImage*) firstFrame withFrame: (IplImage*) secondFrame
{
// THIS SHOWS ME ONLY THE firstFrame IN BOTH
// WINDOWS?
cvShowImage("Window_1", firstFrame);
cvShowImage("Window_2", secondFrame);
return 1;
}
最佳答案
这是因为您不拥有cvQueryFrame
的结果,而cvCapture
结构却拥有。如果要对结果进行处理,则必须首先进行复制。之所以看到两个不同的帧,是因为cvShowImage
在显示它之前先进行了自己的复制。到达调用[self compareFrame]
的位置后,frame和nextFrame指向相同的数据。
尝试以下方法:
while (1) {
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, 10);
frame =cvQueryFrame(capture);
if (!frame) {
NSLog(@"Couldn't read frame 10");
break;
};
frame = cvCloneImage(frame); //Make a copy of the frame
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, 100);
nextFrame = cvQueryFrame(capture);
if (!nextFrame) {
NSLog(@"Couldn't read frame 100");
break;
};
nextFrame = cvCloneImage(nextFrame); //Make a copy of the frame
// PASS THE IMAGES TO THE NEW METHOD
[self compareFrame: frame withFrame: nextFrame];
char c = cvWaitKey();
cvReleaseImage(&frame);
cvReleaseImage(&nextFrame);
if(c==27) {
NSLog(@"ESC pressed!");
break;
}
}
关于objective-c - objective-c 方法中的IplImage *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076327/
是否可以使用 OpenCv (JavaCv) 将图像放入图像中。例如,我有一张 1000x1000 的图像和一张 100x100 的图像。在 600x600 的位置,我想将较小的图像放在较大的图像中。
我必须在内存中保存预定义数量的图像。我创建了一个像这样的数组: int nb_frame_decalage=10; IplImage** accumulateur_image; CvCapture*
我想使用下面的代码保存一个 IplImage(不是 IplImage*) IplImage ipl_from_mat((IplImage)imgDisparity8U); cvNamedWindow(
我需要将 8 位 IplImage 转换为 32 位 IplImage。使用来自整个网络的文档,我尝试了以下操作: // general code img2 = cvCreateImage(cvSiz
当我尝试使用 cvCopy 将一个由 3 个 channel 组成的 IplImage 复制到一个具有 4 个 channel 的 IplImage(我稍后需要额外的 channel )时,我得到的只
我有一个 8 位的 IplImage,我想将它转换为 24 位的 IplImage。我该怎么做? 最佳答案 假设您的灰度图像位于名为 image 的变量中 - IplImage *rgbimage =
我想知道在 opencv 中裁剪 IplImage 的最有效方法是什么。我目前正在执行以下操作,但它似乎太复杂了,我确信有更好的方法。 // set ROI on original image
该代码用于8位数据,以生成灰度IplImage。 IplImage* img_gray_resize = NULL; img_gray_resize = cvCreateImage(c
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我有一个变量 char* ImgMem,它包含所需图像的图像内存(三个 channel /RAW 16),我想将它分成三个并将每个在单 channel 的 IplImage 中:一个用于 R,一个用于
是否有一种简单且成本低廉的方法可以沿 y 轴翻转 IplImage?我正在使用高帧率。 最佳答案 cvFlip(参见 Operation On Arrays )可以原地翻转。支持水平、垂直和组合翻转。
如何使用 OpenCV 获得最清晰的 iplimage?当没有训练图像进行比较时。 例如,有一个移动手的网络摄像头输入。但是当我播放这个视频时,我得到了 10 个 iplimages。但只有第五个更清
我像这样在 IplImage 上绘制对象: cvLine(image, point_1, point_2, color, thickness, CV_AA); // Line cvCircle(mag
我正在尝试从通过 USB 连接到 Raspberry Pi 的罗技高清摄像头捕获帧,RP 正在运行 arch linux,我正在使用 OpenCV C api 和 TCP 客户端。 TCP服务器在ub
当我们有一个 IplImage ,我们如何保存它以便以后使用,或者在我们的代码之外将其作为图像查看(例如通过 png 或 jpeg)? 作为代码示例,我有以下内容: void SaveImage()
OpenCV 中的IplImage 是什么?你能解释一下它作为一种类型的含义吗?我们应该什么时候使用它? 谢谢。 最佳答案 根据您在问题中的“c++”标签:你不应该使用它,你应该使用 cv::Mat。
不知道为什么会这样。方法 : IplImage.createFrom(image); 正在挂起而没有返回任何值。我尝试了多个图像,并确认了它们的存在。我正在编写一个利用模板匹配的应用程序,但是这个第一
我正在尝试对图像应用概率霍夫变换,但出现此编译器错误: invalid initialization of reference of type ‘cv::InputArray {aka const c
我正在Visual Studio 2012上使用OpenCV2.4.5和OpenNI2.0(带有SDK Kinect 1.6)。我尝试开发凝视跟踪应用程序,因为我使用“Kinect传感器”获取imag
我尝试将黑白 UIImage 转换为 IplImage,但从控制台提供这些。可以做什么? CGBitmapContextCreate: unsupported parameter combinatio
我是一名优秀的程序员,十分优秀!