我正在尝试学习 OpenCV,我想应用这个简单的公式:
这是一个逐像素操作,将像素从r转换为s。
这是我的代码:
int main(int /*argc*/, char** /*argv*/) {
Mat _img = imread("lena.jpg");
cvtColor(_img, img, CV_32F);
cout << "original image size: " << img.rows << " " << img.cols << endl;
cout << "original type: " << img.type() << endl;
cout << "original depth: " << img.depth() << endl;
Mat _src = img.clone();
_src += 1;
log(_src, logContrast);
logContrast *= log_c;
/// ...
我得到这个错误:
OpenCV Error: Assertion failed (depth == CV_32F || depth == CV_64F) in log, file /home/user/Documents/Code/OpenCV-2.3.1/modules/core/src/mathfuncs.cpp, line 1772
terminate called after throwing an instance of 'cv::Exception'
what(): /home/alberto/Documents/Code/OpenCV-2.3.1/modules/core/src/mathfuncs.cpp:1772: error: (-215) depth == CV_32F || depth == CV_64F in function log
我尝试使用灰色和彩色图像,并使用cvtColor
,CV_8U
和CV_32F
, C1
,C3
但我总是将 0 作为深度..
我在 OpenCV 手册和OpenCV-2.3.1/modules/core/include/opencv2/core/types_c.h上花费了数小时,但是……我找不到解决方案。我想我对如何转换Mat
对象的深度有些困惑。