js 循环之间的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 循环之间的区别相关的知识,希望对你有一定的参考价值。

参考技术A 可以使用break和continue

break 跳出整个循环

continue 跳出当前循环

遍历数组中的每一项,没有返回值,对原数组没有影响

break 和 continue 都不可使用,会报错

return不会生效

可以使用break 和 continue

可以使用break 和 continue

可以用来遍历可迭代对象Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)

得到value值

不可以遍历普通对象

map方法返回一个新的数组,数组中的元素为原始数组调用函数处理后的值

map方法不会改变原始数组

不会改变原数组,找到第一个符合条件的数据

查询数组中符合条件的第一个元素,如果没有符合条件的元素则返回undefined

不会改变原数组 ,会找到所有符合条件的数据

过滤数组元素,返回过滤后的数组,如果没有符合条件的元素则返回空数组

注意区分filter和find的区别

every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。

注意: every() 不会对空数组进行检测。

注意: every() 不会改变原始数组。

OpenCV Mat 问题:直方图和这个循环之间的区别

【中文标题】OpenCV Mat 问题:直方图和这个循环之间的区别【英文标题】:OpenCV Mat Problem: Difference between Histogram and this loop 【发布时间】:2019-05-24 16:40:27 【问题描述】:

我正在从事图像处理项目,我想用 opencv(opencv 4.0 with cuda suport)在 cuda 上实现它,但我不擅长 c++。 对于两个图像之间的颜色校正,我正在使用此链接中的代码:(https://answers.opencv.org/question/178127/matching-colors-between-two-pictures-in-opencv/)

我的目标是在 GPU 上实现此代码。为此,我试图重写该代码。我遇到了两个问题:

1- 是否有任何 Cuda 实现的库用于此目的? (功能相同)

2-在重写函数((do1ChnHist))中,这个循环计算一维直方图(是真的吗?):

for (size_t p = 0; p<img.total(); p++)
    
        if (mask(p) > 0)
        
            uchar c = img(p);
            h(c) += 1.0;
        
    

但我无法将其替换为:

int histSize = 256;
float range[] =  0, 256 ; //the upper boundary is exclusive
const float* histRange =  range ;
bool uniform = false, accumulate = false;
calcHist(&img, 1, 0, Mat(), h, 1, &histSize, &histRange, uniform, accumulate);

或者用这个循环重写它(为了改变 Mat >> GpuMat 将来。不幸的是 Opencv_cuda 不支持 GpuMat_,因为我试图用 Mat 重写循环):

Mat h;
h = Mat::zeros(cv::Size(256, 1), CV_16U);
uchar x;
for (size_t m = 0; m < img.size().width; m++)
    
        for (size_t n = 0; n < img.size().width; n++)
        
            x = img.at<int>(Point(m, n));
            h.at<int>(Point(int(x),0)) += 1;
        
    

因为两个选项的以太在 do1ChnHist 函数中从主循环返回不同的答案... 谢谢...

【问题讨论】:

【参考方案1】:

Opencv 拥有你想要的所有功能

virtual void cv::cuda::TemplateMatching::match  (   InputArray  image,
InputArray  templ,
OutputArray     result,
Stream &    stream = Stream::Null() 
)   

void    cv::cuda::calcHist (InputArray src, OutputArray hist, Stream &stream=Stream::Null())
    Calculates histogram for one channel 8-bit image. More...

void    cv::cuda::calcHist (InputArray src, InputArray mask, OutputArray hist, Stream &stream=Stream::Null())
    Calculates histogram for one channel 8-bit image confined in given mask. More...

取决于,可以是一维数组,也可以是二维数组,取决于颜色。你应该先学习一些基本的图像处理原理。

【讨论】:

感谢您的回答,但我帖子中的链接包含两个图像的颜色直方图匹配代码,而不是模板匹配。我不能使用 calchist,因为 calchist 从 do1ChnHist 函数的主循环返回不同的答案。如果我的帖子不够清晰,请原谅。谢谢

以上是关于js 循环之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

vue与react之间的区别

js 中var contst let 之间的区别

“while”循环和“do while”循环之间的区别

在循环之前或循环中声明变量之间的区别?

使用包含或循环列表之间有啥大区别吗?

foreach循环和while循环之间的mongoDB游标区别