在读取了未知深度和通道号的图像后,我想一个一个地访问它的像素。
在 opencv 1.x 上,代码如下:
IplImage * I = cvLoadImage( "myimage.tif" );
CvScalar pixel = cvGet2D( I, y, x );
但在 opencv 2.x 上,该cv::Mat.at()
方法要求我知道图像的类型:
cv::Mat I = cv::imread( "myimage.tif" );
if( I.depth() == CV_8U && I.channels() == 3 )
cv::Vec3b pixel = I.at<cv::Vec3b>( x, y );
else if( I.depth() == CV_32F && I.channels() == 1 )
float pixel = I.at<cv::float>( x, y );
是否有类似的函数可以在编译时不知道图像类型的情况下cvGet2D
接收cv::Mat
和返回?cv::Scalar