问题1:
CUDA 12.2 fp16 dnn 编译错误 错误 C2666: 'operator !=': 具有类似的转换重载函数
解决:
CUDA 12.2 fp16 dnn compilation error · Issue #23893 · opencv/opencv · GitHub
Solution:
I "solved" this by using static_cast
.
You want to change line 114
in opencv/modules/dnn/src/cuda4dnn/primitives/normalize_bbox.hpp
:
from:
if (weight != 1.0)
to:
if (weight != static_cast<T>(1.0))
As well as line 124
in opencv/modules/dnn/src/cuda4dnn/primitives/region.hpp
(due to a similar error):
from:
if (nms_iou_threshold > 0) {
to:
if (nms_iou_threshold > static_cast<T>(0)) {
Explanation:
Since both variables, weight
and nms_iou_threshold
, are templated and finally boil down to a primitive type during compilation, it is meaningful to use a static_cast
to convert the respective constant (1.0
(by default double
) and 0
(by default int
)) to the template type. Based on the operator candidates the required types should all be compatible, i.e., the constant values are safe to be casted to the target template type.
问题2:
undefined reference to `TIFFReadDirectory@LIBTIFF_4.0'
解决:
https://stackoverflow.com/questions/38729954/error-installing-opencv-on-ubuntu-16-04
cmake 增加 -D BUILD_TIFF=ON