如果我有一个OpenCV cv :: Mat,我有一个整数列:
[1;2;3;1;2;3;1;2;3]
Run Code Online (Sandbox Code Playgroud)
如何按值(即1)选择一系列指数,将这些指数设置为不同的值(即0),并保持其余值不变?
如果这是MATLAB,我可以很容易地做到:
A = [1;2;3;1;2;3;1;2;3];
A(A==1) = 0;
Run Code Online (Sandbox Code Playgroud)
导致:
[0;2;3;0;2;3;0;2;3]
Run Code Online (Sandbox Code Playgroud)
它在OpenCV中并不像在MATLAB中那么简洁,但它很接近.该setTo()
功能是你想要的.这利用了以下事实:一些逻辑操作cv::Mat
,例如==
和!=
生成可以传递给其他函数的掩码:
uchar data[] = {1, 2, 3, 1, 2, 3, 1, 2, 3};
cv::Mat A(9, 1, CV_8UC1, data);
A.setTo(0, A == 1);
Run Code Online (Sandbox Code Playgroud)
哪个会给出预期的结果:
[0; 2; 3; 0; 2; 3; 0; 2; 3]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1838 次 |
最近记录: |