我正在做一个项目,其中涉及拍摄实时摄像头并将其显示在用户的窗口上。
由于默认情况下相机图像是错误的,所以我使用 cvFlip 翻转它(因此计算机屏幕就像一面镜子),如下所示:
while (true)
{
IplImage currentImage = grabber.grab();
cvFlip(currentImage,currentImage, 1);
// Image then displayed here on the window.
}
这在大多数情况下都可以正常工作。然而,对于很多用户(主要是在速度更快的 PC 上)来说,摄像头画面会剧烈闪烁。基本上显示的是未翻转的图像,然后是翻转的图像,然后是未翻转的图像,一遍又一遍。
所以我然后改变了一些事情来检测问题......
while (true)
{
IplImage currentImage = grabber.grab();
IplImage flippedImage = null;
cvFlip(currentImage,flippedImage, 1); // l-r = 90_degrees_steps_anti_clockwise
if(flippedImage == null)
{
System.out.println("The flipped image is null");
continue;
}
else
{
System.out.println("The flipped image isn't null");
continue;
}
}
翻转的图像似乎总是返回 null。为什么?我究竟做错了什么?这真让我抓狂。
如果这是 cvFlip() 的问题,还有哪些其他方法可以翻转 IplImage?
感谢任何帮助的人!