Lak*_*nan 4 c++ opencv image-processing computer-vision
我被这一段时间困扰了很久.你可以帮我知道,Opencv中minMaxLoc()的数据类型是什么,同时找到Mat变量的max,min值?我从函数中得到了一定的值,但我不知道这个值实际代表了什么,以及在什么数据类型?
Laplacian(src_gray,dst,ddepth,kernel_size,scale,delta,BORDER_DEFAULT);
minMaxLoc(dst,&min,&estimate,&minLoc,&maxLoc,noArray());
Run Code Online (Sandbox Code Playgroud)
'估计'的值大约在1000左右,而如果我尝试访问'dst'Mat变量的值,使用
dst.at<datatype>(k,l)
Run Code Online (Sandbox Code Playgroud)
我得到了模糊的值,从124,125开始为uchar,到2,xxx,xxx,xxx,如果我使用long int.minMaxLoc函数实际给出的值是多少?请帮我.
Ham*_*mer 12
min和估计应该是double类型,我认为它们是正确的.问题可能在于您访问
dst.at<datatype>(k,l)
Run Code Online (Sandbox Code Playgroud)
正如Abhishek Thakur所说,输出取决于你的输入.如果您对矩阵的类型感到困惑,可以查看dst.type(),它返回一个整数,对应于从第557行开始的types_c.h中定义的列表.单通道类型或"深度"的定义是
#define CV_8U 0
#define CV_8S 1
#define CV_16U 2
#define CV_16S 3
#define CV_32S 4
#define CV_32F 5
#define CV_64F 6
Run Code Online (Sandbox Code Playgroud)
您可以在第573行查看用于计算其他类型标识符的公式
#define CV_CN_SHIFT 3
#define CV_DEPTH_MAX (1 << CV_CN_SHIFT)
#define CV_MAT_DEPTH_MASK (CV_DEPTH_MAX - 1)
#define CV_MAT_DEPTH(flags) ((flags) & CV_MAT_DEPTH_MASK)
#define CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT))
Run Code Online (Sandbox Code Playgroud)
例如
#define CV_8UC4 CV_MAKETYPE(CV_8U,4)
Run Code Online (Sandbox Code Playgroud)
有类型
0+((4-1) << 3) == 24
Run Code Online (Sandbox Code Playgroud)
所以对于4通道uchar图像,type()将返回24.从上面你可以看到类型的深度由整数类型的最后3位表示.如果您想要的只是深度(您不关心它有多少个通道),您可以直接使用dst.depth()
| 归档时间: |
|
| 查看次数: |
28775 次 |
| 最近记录: |