撤消仪表convert依行动
Undo consecutives convertTo operations
将其应用于 cv::Mat
original.convertTo(new_image, -1, 1.2, -10);
如何实现相反的效果,以恢复原始矩阵?
我尝试将比例参数降低到1以下,并反转beta参数而不会获得所需的效果。我想我错过了它们的工作方式,但找不到答案。
convertTo
功能计算:
new_image = original * alpha + beta
new_image = original * 1.2 + (-10)
要获得逆操作,您需要:
old_image = (new_image - beta) / alpha;
old_image = (new_image - (-10)) / 1.2;
请 Note 可以将结果 saturated_cast<>
'ed以适合矩阵类型。在这种情况下,该操作不是可逆的,并且会产生与原始图像不同的图像。CV_8U
矩阵很可能发生,但对于CV_64F
矩阵而言。
这是一个简单的片段,可以显示其工作原理:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat original = ...
double alpha = 1.2;
double beta = -10.0;
Mat new_image;
original.convertTo(new_image, -1, alpha, beta);
// // Revert the 'convertTo'
Mat old_image;
old_image = (new_image - beta) / alpha;
// Check the difference
Mat diff;
absdiff(original, old_image, diff);
return 0;
}
相关文章:
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- 如何在 C++ 中将双精度数组中的值"force convert"到字符串输出中?
- "Cannot convert Python object argument to type '<typename>'" - 使用 Cython 包装 C++ 类时出错
- 汽车仪表模拟器
- 我一直收到错误"cannot convert 'float*' to 'float' in return"
- 地图'Cannot convert from _Ty2 to T*'错误
- PHP 中的实时仪表板,可从C++共享数据
- Arduino立体声VU仪表
- 将 2D 数组插入 std::vector 时"cannot convert from 'const GLfloat [12]' to '_Objty'"错误消息
- 如何创建和分发 SteamVR 仪表板叠加层
- 如何修复C++中的'cannot convert char to char*'错误?
- 返回"Cannot convert from 'std::ofstream {aka std::basic_ofstream<char>}' to bool"错误
- 列表插入"Cannot convert argument from Class<T>* to Class<T> &&"
- "Cannot convert parameter 1 from double to float"虽然没有更改参数
- C++ 中的错误" cannot convert node to node* "
- 汽车的定制仪表板;使用C 读取OBD II数据
- "cannot convert argument 1 from 'Node<T>' to 'std::nullptr_t"编译器错误
- 撤消仪表convert依行动
- 'Convert' 5 个字符到整数
- 如何修复C++编译器错误"cannot convert 'Type' to 'const Type*'"?