[英]Convert Scalar to Mat in JavaCV
我试图使用JavaCV将不同的颜色应用于输入范围内两个数字之间的区域。 请参阅以下代码,以获取其工作方式示例:
Mat mask = new Mat();
inRange(intensity, new Scalar(0.0), new Scalar(0.3), mask);
image.setTo(new Scalar(255.0, 0.0, 0.0, 1.0), mask);
我无法编译该代码,因为JavaCV似乎在inRange和setTo中都希望使用Mat
而不是Scalar
对象,请参见此处的定义:
@Namespace("cv") public static native void inRange(@ByVal Mat src,
@ByVal Mat lowerb, @ByVal Mat upperb, @ByVal Mat dst);
在OpenCV文档中,应该使用Scalar
而不是Mat
。 有没有一种方法可以将Scalar
转换为Mat
,这样行得通?
我注意到,我可以用cvInRangeS
代替inRange
,但我一直没能找到一个相当于setTo
功能。
当您使用格式OpenCV Error: Sizes of input arguments do not match (The lower bounary is neither an array of the same size and same type as src, nor a scalar)
Mat
调用inRange
时,您应该得到的错误是OpenCV Error: Sizes of input arguments do not match (The lower bounary is neither an array of the same size and same type as src, nor a scalar)
,或者类似这些行(请注意拼写错误)。
如果要将Mat
用作Scalar
,则可以使用double[]
或Scalar
对象初始化Mat
。 例如: new Mat(new double[]{255, 255, 255, 0})
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.