如何与元素进行元素比较
How to do element-wise comparison with Eigen?
我正在尝试使用eigen在C 中实现以下伪代码:
img_binary = +1*(img>img_mean) + -1*(img<img_mean)
即。我试图将灰度图像转换为二进制图像,以便大于图像均值的值是 1,而图像均值均值为-1。到目前为止,我有以下内容:
cv::Mat cv_image
cv_image = cv::imread(img_path, CV_LOAD_IMAGE_GRAYSCALE)
MatrixXf eig_image;
cv::cv2eigen(cv_image, eig_image):
float image_mean = eig_image.mean();
ArrayXXf bin_image;
bin_image = eig_image.array() > image_mean;
我在最后一行中遇到了一个错误,说我混合了不同的数字类型。关于我如何与eigen进行元素比较的任何建议?
eigen中最简单的解决方案是
ArrayXXf bin_image = (eig_image.array() > image_mean).cast<float>()*2.f-1.f;
另一种选择是:
ArrayXXf bin_image = (eig_image.array() > image_mean)
.select(ArrayXXf::Constant(1.0f,eig_image.rows(),eig_image.cols()), -1.0f);
不幸的是,必须使用ArrayXXf::Constant
进行一个参数,因为没有.select
接受两个标量值
但是,除非您打算在eigen中进行进一步处理,否则您应该考虑使用相应的OPENCV方法threshold
。
相关文章:
- C++ 如何比较n个排序的整数向量以找到互元素?
- 关于比较两个无序数组并删除 a[] 中可以在 b[] 中找到的元素的问题
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 如何在比较时更改集合元素的值(在 c++ 中)?
- 比较文本文件的元素
- 比较文本文件的元素
- 比较它们之间的元素并获取公共值的键
- 如何比较C++中向量的元素?
- 比较向量中的元素时所花费的时间呈指数级增长
- gtest 期望无序元素与自定义比较器/匹配器一起使用
- 用字符串 c++ 比较对向量的元素
- 如何与元素进行元素比较
- 字符指针对象和相应的字符数组元素比较
- 开发C++数组元素比较
- 快速矢量元素比较
- 使用下标运算符进行Integer Vector元素比较失败,但使用at函数成功
- 是否有可能判断哪个数组元素比较结果为真?
- 当>=用于元素比较时,插入排序比>慢,为什么?
- 如何在C++中逐元素比较相等的两个向量
- 简单的c++数组元素比较