我正在尝试使用本机代码学习openCv,我正在参考here
我使用ndk-build成功构建了项目
现在我想在scan.cpp文件中进行更改,该文件负责获取图像点,裁剪图像,扫描图像并设置颜色。
我想为文件中的第321行给出不同的参数
cvtColor(mbgra,dst,CV_BGR2GRAY);
我可以为 CV_BGR2GRAY 提供任何其他论据
如果是的话?如果没有为什么?
请指导我,告诉我是否遗漏了什么。 谢谢。
答案 0 :(得分:1)
是的,您可以提供您想要的任何参数。你会得到合理的产量吗?这取决于。 CV_BGR2GRAY需要BGR(3通道)输入并输出灰色(1通道)。
如果您输入的是3通道BGR(即使它不是BGR,opencv也不关心),您可以使用任何3通道转换,例如CV_BGR2HSV,这将导致3通道HSV输出
如果您输入的是1个频道 - 那么您显然无法使用BGR 2 GRAY。
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