gpt4 book ai didi

opencv - 如果输入(src)是Mat图像,此循环如何工作?

转载 作者:行者123 更新时间:2023-12-02 17:13:28 25 4
gpt4 key购买 nike

我正在对像素进行一些平均,并且我知道此循环可以与任何2d数组一起使用。但是,如果src是Mat镜像(OpenCV)怎么办?
我很难在Mat图片功能中传递这些参数
我的问题有意义吗?

#include <iostream>

const unsigned dim = 3;
typedef int array_type [dim][dim];

这是循环:
void average(array_type& dest, const array_type& src)
{
// corners:
dest[ 0 ][ 0 ] =
(src[ 0 ][ 0 ] + src[ 0 ][ 1 ] + src[ 1 ][ 0 ] + src[ 1 ][ 1 ])/4;
dest[dim-1][ 0 ] =
(src[dim-1][ 0 ] + src[dim-2][ 0 ] + src[dim-1][ 1 ] + src[dim-2][ 1 ])/4;
dest[ 0 ][dim-1] =
(src[ 0 ][dim-1] + src[ 1 ][dim-1] + src[ 0 ][dim-2] + src[ 1 ][dim-2])/4;
dest[dim-1][dim-1] =
(src[dim-1][dim-1] + src[dim-2][dim-1] + src[dim-1][dim-2] + src[dim-2][dim-2])/4;

// top, bottom, and sides:
for (unsigned i = 1; i < dim - 1; ++i)
{
const unsigned j = dim - 1;

dest[0][i] =
(src[0][i-1] + src[0][i] + src[0][i+1] + src[ 1 ][i-1] + src[ 1 ][i] + src[ 1 ][i+1])/6;
dest[j][i] =
(src[j][i-1] + src[j][i] + src[j][i+1] + src[j-1][i-1] + src[j-1][i] + src[j-1][i+1])/6;

dest[i][0] =
(src[i-1][0] + src[i][0] + src[i+1][0] + src[i-1][ 1 ] + src[i][ 1 ] + src[i+1][ 1 ])/6;
dest[i][j] =
(src[i-1][j] + src[i][j] + src[i+1][j] + src[i-1][j-1] + src[i][j-1] + src[i+1][j-1])/6;
}

// middle:
for (unsigned i = 1; i < dim - 1; ++i)
{
for (unsigned j = 1; j < dim - 1; ++j)
{
dest[i][j] = (src[i-1][j-1] + src[i-1][j] + src[i-1][j+1] +
src[ i ][j-1] + src[ i ][j] + src[ i ][j+1] +
src[i+1][j-1] + src[i+1][j] + src[i+1][j+1]) / 9 ;
}
}
}

最佳答案

我认为您只是想知道如何像在2D数组中那样访问Mat image像素。请参见下面的代码:

for(int i=0; i<image.rows; i++)
{
for(int j=0; j<image.cols; j++)
{
value_from_Mat_array = image.at<uchar>(i,j);
}
}

因此, i,j是与2D数组中相似的索引。

关于opencv - 如果输入(src)是Mat图像,此循环如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com