簡體   English   中英

斷言失敗 (scn == 3 || scn == 4) in void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int), file /../Linux/./../src/ color.cpp,第 8000 行

[英]Assertion failed (scn == 3 || scn == 4) in void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int), file /../Linux/./../src/color.cpp, line 8000

我正在嘗試使用本機代碼學習 openCv,我正在從這里獲取參考。
我使用 ndk-build 成功構建了項目。
現在我想在scan.cpp文件中進行更改, 文件負責獲取圖像點、裁剪、掃描和設置顏色。
我想為文件中的第 321 行提供不同的參數
cvtColor(mbgra, dst, CV_BGR2GRAY);
我可以為CV_BGR2GRAY提供任何其他參數
如果是,如何? 如果沒有,為什么?

請指導我並告訴我是否遺漏了什么。 謝謝你。

是的,你可以給出任何你想要的論點。 你會得到一個合理的輸出嗎? 這取決於。 CV_BGR2GRAY 需要 BGR(3 通道)輸入並將輸出灰色(1 通道)。

如果您輸入的是 3 通道 BGR(即使它不是真正的 BGR,opencv 也不會關心),您可以使用任何 3 通道轉換,例如 CV_BGR2HSV,這將導致 3 通道 HSV 輸出。

如果您的輸入是 1 通道 - 顯然您將無法使用 BGR 2 GREY。

Mat bgraImage = imread("BGRA_IMAGE.png", -1);  // 4 channel input image
Mat grayImage = imread("GRAY_IMAGE.png", CV_LOAD_IMAGE_GRAYSCALE);  // 1 channel input image
Mat result;

cvtColor(bgraImage, result, CV_BGRA2GRAY);    // CORRECT, input 4 channel, output will be 1 channel
cvtColor(bgraImage, result, CV_BGR2GRAY);    // ALSO CORRECT
cvtColor(grayImage, result, CV_BGR2GRAY);    // INCORRECT & will crash, input is 1 channel, expecting 3 or 4
cvtColor(grayImage, result, CV_GRAY2BGR);    // CORRECT, input is 1 channel, output is 3 channel

你可以看到所有可能的顏色轉換這里和閱讀更多關於他們在這里

暫無
暫無

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

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