1. ホーム
  2. c++

[解決済み] OpenCVのエラーです。Assertion failed (size.width>0 && size.height>0) シンプルなコードです。

2022-01-28 20:22:23

質問内容

簡単なOpenCVのプログラムを実行しようとしているのですが、このようなエラーが発生しました。

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file .../opencv/modules/highgui/src/window.cpp, line 276

コード

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;

int main()
{
    cout << "Hello World!" << endl;

    cv::Mat inputImage = cv::imread("/home/beniz1.jpg");
    cv::imshow("Display Image", inputImage);

    return 0;
}

このエラーの原因は何ですか?

解決方法は?

このエラーは、空の画像を表示しようとしていることを意味します。画像を imshow , これは通常引き起こされるものです。

  1. 画像のパスが間違っている(Windowsではディレクトリ区切り記号を2回エスケープしている。 imread("C:\path\to\image.png") であるべきです。 imread("C:\\path\\to\\image.png") または imread("C:/path/to/image.png") );
  2. 画像の拡張子が間違っている。(例: ".jpg" は ".jpeg" と異なる);
  3. そのフォルダにアクセスする権限がない。

他の問題を排除するための簡単な回避策は、画像をプロジェクトディレクトリに置き、単に imread は、ファイル名 ( imread("image.png") ).

を忘れずに追加してください。 waitKey(); そうでなければ何も表示されません。

画像が正しく読み込まれたかどうかは、このように確認することができます。

#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;

int main()
{
    Mat3b img = imread("path_to_image");

    if (!img.data)
    {
        std::cout << "Image not loaded";
        return -1;
    }

    imshow("img", img);
    waitKey();
    return 0;
}