关注this example我尝试使用以下值初始化openCV Mat
:
cv::Mat image = (cv::Mat_<int>(3,3) << 0, 255, 0, 0, 255, 0, 0, 255, 0);
但是,我的IDE抱怨
Binary operator '<<' can't be applied to the expressions of type 'cv::Mat_<int>' and 'int'
编译时我得到了
OpenCV Error: The function/feature is not implemented (Unsupported combination of source format (=4), and buffer format (=5)) in getLinearRowFilter, file /build/buildd/opencv-2.4.8+dfsg1/modules/imgproc/src/filter.cpp, line 2857
terminate called after throwing an instance of 'cv::Exception'
what(): /build/buildd/opencv-2.4.8+dfsg1/modules/imgproc/src/filter.cpp:2857: error: (-213) Unsupported combination of source format (=4), and buffer format (=5) in function getLinearRowFilter
我现在使用openCV for Python已经有一段时间了,但我完全迷失了用C ++。
答案 0 :(得分:1)
您可能正在尝试应用使用getLinearRowFilter()
的函数(或过滤器)(例如Sobel
和其他)并且您正在使用非类型(输入和输出)的组合允许的。
您可以查看允许的组合here,其中sdepth
是来源的深度(input
),ddepth
是目的地的深度({{1} }}):
output
根据错误,您可能正在使用// these are allowed, otherwise the error will be thrown
if( sdepth == CV_8U && ddepth == CV_32S )
if( sdepth == CV_8U && ddepth == CV_32F )
if( sdepth == CV_8U && ddepth == CV_64F )
if( sdepth == CV_16U && ddepth == CV_32F )
if( sdepth == CV_16U && ddepth == CV_64F )
if( sdepth == CV_16S && ddepth == CV_32F )
if( sdepth == CV_16S && ddepth == CV_64F )
if( sdepth == CV_32F && ddepth == CV_32F )
if( sdepth == CV_32F && ddepth == CV_64F )
if( sdepth == CV_64F && ddepth == CV_64F )
(=4)输入和CV_32S
(=5)输出。基本上,您不能在使用CV_32F
的函数中使用CV_32S
(Mat_<int>
)作为输入。
要解决此问题,您可以在使用之前转换输入。例如:
getLinearRowFilter()
注意:信息不准确,因为并非所有相关代码都在问题中。