Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB中OpenCV的等效阈值函数_Matlab_Opencv_Image Processing - Fatal编程技术网

MATLAB中OpenCV的等效阈值函数

MATLAB中OpenCV的等效阈值函数,matlab,opencv,image-processing,Matlab,Opencv,Image Processing,MATLAB中的cv2.threshold和cv2.inRange的等价物是什么?让我们一次处理一个函数: 最接近的等价物是使用。这将根据指定的强度级别设置图像阈值。但是,im2bw与cv2.threshold的不同之处在于,无法指定输出阈值im2bw假定它是二进制1。因此,如果要将其转换为不同的值,则需要将图像转换为uint8(或图像的任何数据类型),然后将1的任何位置设置为所需的值。因此,假设您的图像已加载且图像名为im,level是您要设置阈值的阈值,而maxval是您希望每个阈值像素采用

MATLAB中的
cv2.threshold
cv2.inRange
的等价物是什么?

让我们一次处理一个函数:

最接近的等价物是使用。这将根据指定的强度级别设置图像阈值。但是,
im2bw
cv2.threshold
的不同之处在于,无法指定输出阈值
im2bw
假定它是二进制1。因此,如果要将其转换为不同的值,则需要将图像转换为
uint8
(或图像的任何数据类型),然后将1的任何位置设置为所需的值。因此,假设您的图像已加载且图像名为
im
level
是您要设置阈值的阈值,而
maxval
是您希望每个阈值像素采用的最终输出值,则您可以执行以下操作:

out = im2bw(im, level/255);
out = uint8(out);
out(out == 1) = maxval;
需要注意的是,阈值水平在
[0,1]
之间是标准化的。我除以255,因为大多数图像都是
uint8
,因此除以255将使范围变为
[0,1]
<代码>cv2。阈值也可通过大津进行阈值化。您可以通过在MATLAB中执行此操作
graysthresh
将提供
[0,1]
之间的最佳阈值,您可以直接输入
im2bw
。因此:

out = im2bw(im, graythresh(im));
out = uint8(out);
out(out == 1) = maxval;

MATLAB中不支持此功能。你需要做的是在图像的每个平面上(只有一个用于灰度,三个用于颜色),分别检查是否有像素在有效范围内。如果有,则将其设置为逻辑
true
。因此,对于灰度图像,您可以执行以下操作:

minval = ...; %// Define minimum value here
maxval = ...; %// Define maximum value here

out = (im >= minval & im <= maxval);
minval = ...; %// Define three element vector here for each colour plane i.e. [0 128 128];
maxval = ...; %// Define three element vector here for each colour plane i.e. [0 128 128];

out = true(size(im,1), size(im,2));
for p = 1 : 3
    out = out & (im(:,:,p) >= minval(p) & im(:,:,p) <= maxval(p));
end
minval=…;%//在此定义最小值
maxval=…;%//在此定义最大值

out=(im>=minval&im Yes!这是一个解释得很好的答案。我还认为没有与MATLAB函数等效的函数。必须修改这些函数,或者必须使用索引。非常感谢您的回答!@Maham-不客气:)这个问题集Python、OpenCV和MATLAB于一身。我忍不住回答@Maham-我的帖子中有一些小的拼写错误。请检查我的编辑。