Windows窗体应用程序的OpenCV IMread问题

时间:2014-03-31 00:50:44

标签: winforms image opencv

我有一个加载图像的应用程序,所以我使用:

image1 = imread("Cam_Pic.jpeg", CV_LOAD_IMAGE_COLOR);

然后我做一些面部检测代码并将其保存到文件中,然后在我的Windows窗体上显示它。如果我只做一次,它的效果非常好。给你一点背景。这就是我的代码的工作原理:

  • 我在表单上点击“按钮”
  • 我的相机需要pic&将其保存为JPEG图像
  • 图片由imread
  • 读取
  • haar cascade用于检测面部
  • 矩形放置在检测面
  • 周围
  • 该图像保存为新JPEG
  • 表格加载新的JPEG图像(脸部周围有矩形)

如果我只做一次,那就完美了。如果我再次按下按钮,相机将拍摄照片,但是我的“face_detect”功能会给我一个IMREAD错误,这次它说它无法读取相机拍摄的照片,但它就在那里。这是我的代码或其中的一部分:

void Face_detect()
{
    Mat image1;
    Mat grayscaleFrame;

    //image1 = cam_cap;

    //G E T   I M A G E 
    image1 = imread("Cam_Pic.jpeg", CV_LOAD_IMAGE_COLOR);

    if (image1.empty())
    {
        cout << "!!! Failed imread(): image not found" << endl;
    }

.
.
.
.

imwrite("Detected_image.jpeg", image1);
}


/////////// W I N D O W S  F O R M /////////////////

    private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) 
             {
                 // snap picture
                 PlaySound(L"Eagle_img_analyzing.wav", NULL, SND_FILENAME | SND_ASYNC);
                 Eagle.saveImage("Cam_Pic.jpeg");
                 Face_detect();
                 PlaySound(L"Eagle_Analysis_complete.wav", NULL, SND_FILENAME | SND_ASYNC);
                 pictureBox1-> Load("Detected_image.jpeg");

             }

知道如何排除故障吗?

0 个答案:

没有答案