![](/img/trans.png)
[英]Assertion failed (scn == 3 || scn == 4) in void cv::cvtColor(cv::InputArray Android
[英]Assertion failed (scn == 3 || scn == 4) in void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int), file /../Linux/./../src/color.cpp, line 8000
是的,你可以給出任何你想要的論點。 你會得到一個合理的輸出嗎? 這取決於。 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.