两个矩阵按位与、按位或、按位取反、按位异或,可以使用函数cv::bitwise_and()、cv::bitwise_or()、cv::bitwise_not()、cv::bitwise_xor()。如果不使用掩码,可以直接用逻辑运算符&、|、!、^;
函数原型为:
cv::bitwise_and(
cv::InputArray src1, // first input array
cv::InputArray src2, // second input array
cv::OutputArray dst, // result array
cv::InputArray mask = cv::noArray() // optional do only where nonzero
);
cv::bitwise_not(
cv::InputArray src, // input array
cv::OutputArray dst, // result array
cv::InputArray mask = cv::noArray() // optional,do only where nonzero
);
cv::bitwise_or(
cv::InputArray src1, // first input array
cv::InputArray src2, // second input array
cv::OutputArray dst, // result array
cv::InputArray mask = cv::noArray() // optional do only where nonzero
);
cv::bitwise_xor(
cv::InputArray src1, // first input array
cv::InputArray src2, // second input array
cv::OutputArray dst, // result array
cv::InputArray mask = cv::noArray() // optional do only where nonzero
);
示例代码:
cv::Mat m1 = cv::Mat::ones(cv::Size(4, 6), CV_8UC1);
cv::Mat m2 = cv::Mat::eye(cv::Size(4, 6), CV_8UC1);
cv::Mat m3;
cv::bitwise_and(m1, m2, m3);
std::cout << "& = \n " << m3 << std::endl;
cv::bitwise_or(m1, m2, m3);
std::cout << "| = \n " << m3 << std::endl;
cv::bitwise_not(m2, m3);
std::cout << "! = \n " << m3 << std::endl;
cv::bitwise_xor(m1, m2, m3);
std::cout << "^ = \n " << m3 << std::endl;
输出结果:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/46186.html