总是在caffe编译时遇到opencv的版本问题,继续总结记录一波。基本上都是opencv3与opencv2版本差距问题。
本人常常遇到的是:
cvtColor函数中颜色转换系的宏,全替换为”COLOR_”前缀,如CV_BGR2HSV改为COLOR_BGR2HSV
在caffe有时还要在前加cv::,不然还是找不到。
caffe2 报错:caffe2/image/image_input_op.h:521:42:
error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope
color_ ? CV_LOAD_IMAGE_COLOR : CV_LOAD_IMAGE_GRAYSCALE);
等等这类的,一个是版本问题,一个是作用域问题:
需要到caffe2/image/image_input_op.h,
将CV_LOAD_IMAGE_COLOR 改成 cv::IMREAD_COLOR
将CV_LOAD_IMAGE_GRAYSCALE 改成 cv::IMREAD_GRAYSCALE
下面内容取自《opencv3编程入门》
opencv3中取消了opencv1中的”cv_”命名规范,对于这些cv_前缀的使用了新的命名规范。这里大概可以大概分为以下这几类。
(1)直接去掉”CV_”前缀
1)namedWindow中将cv_WINDOW_AUTOSIZE改为WINDOW_AUTOSIZE
2)line函数及其同一类的绘图函数,cv_filed改为filled
3)threshold函数中将cv_thresh_binary改为thresh_binary
4)remap函数中,cv_inter_linear改为inter_linear
5)鼠标操作函数setmousecallback中将cv_event_lbuttonup改为event_lbuttonup,等等一些直接将cv去除。
6)imwrite中,将cv_inpaint_telea改为inpaint_telea,cv_inpaint_ns改为inpaint_ns
7)设置摄像头尺寸时将cv_cap_prop_frame_width改为cap_prop_frame_width,cv_cap_prop_frame_height 改为 cap_prop_frame_height
..等等一些函数可以直接将前缀去除。
(2)需要新的前缀
比较常用的一些如
1)line函数中一些绘函数中的参数,cv_AA改为LINE_AA
2)cvtColor函数中颜色转换系的宏,全替换为”COLOR_”前缀,如CV_BGR2HSV改为COLOR_BGR2HSV
3)normalize中,将cv_MINMAX改为NORM_MINMAX 等等
(3)其他
1)定义尺寸时将cvSize(-1,-1)改为Size(-1,-1)
2)在表示颜色时,将cv_RGB改为Scalar。
其中Videowriter中的fourcc,cv2.x版本中中形式为cv2.cv.fourcc,在cv3,0以上的版本中应为cv2.VideoWriter_fourcc,需要特别注意。
持续更新。