What does this notation mean in C++?
我开始学习C++中的OpenCV。我对opencv的python版本有很好的了解,我想知道下面的内容在python中会被翻译成什么?我试图理解cv2.warpPerspective()函数的数学原理。我那小小的Python脑袋绕不住它。
1
| w = w != 0.0f ? 1.f / w : 0.0f |
到目前为止,我只知道如果"w"不等于"0",那么它将等于"1/w",否则"w"将等于"0"
对吗?
- ?:是三元条件运算符,表示如果cond(w != 0然后返回2nd。精氨酸(1.f / w或3rd.arg(0.0f)。请谷歌为C++条件操作员找到更多。我相信python应该是1.0 / w if w != 0.0 else 0.0。
- 如果"w"不等于"0",那么它将等于"1/w",否则"w"将等于"0"-好吧,似乎您已经有了答案。你的实际问题是什么?
- 相当于if (w != 0.0f) { w = 1.f / w; } else { w = 0.0f; }。
- 感谢您的回复,我正在查看docs.microsoft.com/en-us/windows-hardware/drivers/debugger/…和其他来源,但我不确定这一行中所有的部分是如何组合在一起的。
- 找到了:python有三元条件运算符吗?(是的,我记得没错。)
- @有些程序是多余的。
- @stackdanny是的,但它仍然是条件表达式的一部分,因此需要是等价语句的一部分。否则语句将与表达式不匹配。
- @你说得对。我想这是三元运算符有点过分杀伤力,单个if就可以了。但我认为编译器无论如何都会优化三元。
- @Stackdanny更不用说if声明比表达式清楚得多。更清晰的代码意味着更容易理解它及其功能,也更容易维护。条件表达式经常被误用为过早的优化,因为相信编译器不会以其他方式生成最佳代码。
是的,没错。如果他们只写
可能会被零除。因此,在这里添加三元运算符是一种很好的处理方法。更直观的选择是:
1 2 3
| if (w != 0.0f){
w = 1.0f / w;
} |
- 我会在计时器亮的时候接受这个。
- 谢谢您。下次问这样的问题时,请考虑多花几分钟时间研究,这样可以避免这样的问题。毕竟,他们不会给这个网站增加任何价值。