<p>装订好的支票错了。您应该检查<code>size1-1</code>,而不是<code>size1+1</code>。此外,在<code>else</code>的情况下,您将<code>255</code>硬编码为列,但是<code>size1</code>是<code>1024</code>,因此只使用<code>i</code>insteat更有意义:</p>
<pre><code>pixels2 = img_2.load()
for j in range(img_2.size[0]):
for i in range(img_2.size[1]):
if i < size1<b>-1</b>:
pixels2[i,j] = pixels[i+1,j]
else:
pixels2[<b>i</b>,j] = pixels[0,j]
img_2.show()</code></pre>
<p>您可以使用模表达式进一步简化此过程:</p>
<pre><code>pixels2 = img_2.load()
for j in range(img_2.size[0]):
for i in range(img_2.size[1]):
pixels2[i,j] = pixels[<b>(i+1)%size1</b>,j]
img_2.show()</code></pre>
<p>然而,上述方法仍然不起作用,因为在这里您将首先为稍后用于第二次复制操作的像素赋值。您可以通过将第一个像素存储在变量中,然后设置该变量来解决此问题,如:</p>
<pre><code>pixels2 = img_2.load()
for j in range(img_2.size[0]):
<b>first = pixels2[0,j]</b>
for i in range(img_2.size[1]<b>-1</b>):
pixels2[i,j] = pixels[<b>i+1</b>,j]
<b>pixels2[-1,j] = first</b>
img_2.show()</code></pre>
<p>但是,对于高级图像处理,使用像<a href="https://pypi.org/project/opencv-python/" rel="nofollow noreferrer"><strong>^{<cd8>}</strong> [PyPi]</a>这样的库可能更有意义。你知道吗</p>