gpt4 book ai didi

ios - 如何以顺时针方向遍历像素而不是快速快速扫描通常的行列?

转载 作者:行者123 更新时间:2023-11-29 01:05:27 26 4
gpt4 key购买 nike

项目是找到图像的边界,给定的想法是找到顺时针像素位置之间像素值的较大差异,这些像素位置归零在图像的中心,从而找到边界像素位置。我们有什么办法可以顺时针方向遍历像素?

通常的行列扫描无法找到沿图像边界的像素差异。

for y in 0..<rgbaImage.height {
for x in 0..<rgbaImage.width {
let index = x * rgbaImage.height + y

var pixel = rgbaImage.pixels[index]
print("\((Int32(pixel.red) + Int32(pixel.green) + Int32(pixel.blue)) / 3)", terminator:" ")

最佳答案

这是一个螺旋循环构建 n x n 数组的快速示例。您可以使用相同的方法循环浏览图像。

将其粘贴到 Playground 中进行测试:

//: Playground - noun: a place where people can play

var spiral = [[Int]](count: 5, repeatedValue: [Int](count: 5, repeatedValue: 0))

var n:Int = 5

var value:Int = 0
var minCol:Int = 0
var maxCol:Int = n-1
var minRow:Int = 0
var maxRow:Int = n-1

while value != n*n {
for var i = minCol; i <= maxCol; i += 1 {
spiral[minRow][i] = value;
value += 1;
}

for var i = minRow+1; i <= maxRow; i += 1 {
spiral[i][maxCol] = value;
value += 1;
}

for var i = maxCol-1; i >= minCol; i-- {
spiral[maxRow][i] = value;
value += 1;
}

for var i = maxRow-1; i >= minRow+1; i-- {
spiral[i][minCol] = value;
value += 1;
}

minCol += 1;
minRow += 1;
maxCol -= 1;
maxRow -= 1;
}

//loop through the array we just built
for var x = 0; x < n; x += 1 {
for var y = 0; y < n; y += 1 {
print(spiral[x][y],terminator: "\t")
}
print();
}

输出看起来像这样:

0   1   2   3   4   
15 16 17 18 5
14 23 24 19 6
13 22 21 20 7
12 11 10 9 8

关于ios - 如何以顺时针方向遍历像素而不是快速快速扫描通常的行列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36436656/

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