簡體   English   中英

OpenCV:斷言失敗

[英]OpenCV:Assertion Failed

當我嘗試使用adaptiveThreshold() 函數時,我遇到了這種類型的錯誤。 可能出了什么問題?

這是我的代碼:

int main()
{
    try 
    {
        cv::Mat img = cv::imread("rubikscube.png");
        cv::Mat thres_final;
        cv::Mat adap_thres_final;

        cv::threshold(img, thres_final, 0, 255, CV_THRESH_BINARY);
        cv::adaptiveThreshold(img, adap_thres_final, 255, CV_ADAPTIVE_THRESH_GAUSSIAN_C, CV_THRESH_BINARY, 11, 2);

        cv::namedWindow("Source");
        cv::imshow("Source", img);

        cv::namedWindow("Threshold");
        cv::imshow("Threshold", thres_final);

        cv::namedWindow("Adaptive Threshold");
        cv::imshow("Adaptive Threshold", adap_thres_final);

        cv::waitKey(0);

    }
    catch (...)
    {
        std::cout << "Exception Occured! \n";
    }

    return 0;
}

在此處輸入圖片說明

當我在我的機器上運行此代碼時,出現以下錯誤

OpenCV Error: Assertion failed (src.type() == CV_8UC1) in adaptiveThreshold, file /Users/lakshayg/dev/opencv/modules/imgproc/src/thresh.cpp, line 795

adaptiveThreshold CV_8UC1接受CV_8UC1類型的圖像,但您傳遞的是CV_8UC3

解決此問題的一種方法是首先將圖像讀取為灰度。

更改為的imread調用

cv::Mat img = cv::imread("rubikscube.png", CV_LOAD_IMAGE_GRAYSCALE);

此處的CV_LOAD_IMAGE_GRAYSCALE指示函數將圖像讀取為灰度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM