在OpenCV中保存图像

35

我是OpenCV的新手,正在尝试捕获一张图片并将其保存到文件中。下面是我发布的参考代码。

jpg文件已经被保存了,但是它是黑色的。

// Capture the Image from the webcam
CvCapture *pCapturedImage = cvCreateCameraCapture(0);

// Get the frame
IplImage *pSaveImg = cvQueryFrame(pCapturedImage);

// Save the frame into a file
cvSaveImage("test.jpg". ,pSaveImg); // A JPG FILE IS BEING SAVED
                                    // OF 6KB , BUT IT IS BLACK

所有功能都是成功的。我已经在XP和Vista上尝试了上述代码 - 结果在两者上都是黑色图像。请告诉我我错过了什么。

15个回答

1

我建议您运行OpenCV的稳定性检查。

这是一系列位于OpenCV的bin目录中的小型可执行文件。

它将检查您的相机是否正常。


谢谢提供信息。我会去检查一下。 但是我认为我的相机没问题,因为我可以使用机器人工具RoboRealm看到我的图像和照片。我还用网络摄像头进行视频会议,别人也能看到我。 - Sujay Ghosh
我尝试在我的上网本上运行OpenCV,摄像头通常正常工作,但出于某种原因,它没有通过健全性检查。我也无法让它正常工作。 - Eric

1
希望这能保存你的网络摄像头图片。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
   VideoCapture cap(0);

   Mat save_img;

   cap >> save_img;

   char Esc = 0;

   while (Esc != 27 && cap.isOpened()) {        
    bool Frame = cap.read(save_img);        
    if (!Frame || save_img.empty()) {       
        cout << "error: frame not read from webcam\n";      
        break;                                              
    }
    namedWindow("save_img", CV_WINDOW_NORMAL);  
    imshow("imgOriginal", save_img);            
    Esc = waitKey(1);
}
imwrite("test.jpg",save_img); 
}

0

根据我的经验,在使用时捕获的前几帧:

frame = cvQueryFrame( capture );

页面可能会出现空白。您可以等待一小段时间(约3秒钟),然后尝试捕获图像。


0
在OSX上,只有当我给cvSaveImage提供一个完整的路径时,保存视频帧和静止图像才能正常工作。
cvSaveImage("/Users/nicc/image.jpg",img);

0

我认为,可能是相机在第一帧没有初始化。尝试在10帧后保存图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接