在这里,我们将使用作为Anaconda界面一部分的Spyder工具在Python制作印度国旗。对于Python程序员来说,这是初学者的实践问题。
先决条件:此代码的唯一先决条件是对基本Python编程的了解很少。如果您没有任何Python解释器,则可以从这里安装anaconda。
方法:我们将在此代码中使用简单的直线和圆的特征方程。建议您在完全解决之前,先尝试一下。
导入这3个软件包以实现此代码中使用的功能。
import skimage # for using image processing functions
import os
from skimage import io # for using imshow function
1.至少读取标志预期尺寸的图像。
image2 = io.imread('C:\Users\geeksforgeeks\Desktop\index.jpg')
2.让我们假设标志的尺寸为189px高和267px宽。
x = 189/2
y = 267/2
r = 189/6
3.开始两个for循环,以迭代到图像的每个像素。
for i in range(0, 189):
for j in range(0, 267):
在内部循环内执行3-(a)和3-(b)。
3-(a)。通过将图像分成3个等高的颜色,可以将图像分为橙色,白色和绿色。
if i in range(0, 189/3):
image2[i][j] = [255, 128, 64] # Color coding for Orange
elif i in range(189/3, 189*2/3):
image2[i][j] = [255, 255, 255] # Color coding for White
else:
image2[i][j] = [0, 128, 0] # Color coding for Green
3-(b)。现在是时候使用圆的方程在Ashoka Chakra的中心绘制圆了。
if (( pow((x-i), 2) + pow((y-j), 2) ) = pow(r-2, 2)):
image2[i][j] = [0, 0, 255]
4.要绘制脉轮的辐条,我们需要使用仅在圆内的直线方程,这里我绘制了4 x 2辐条,但是可以使用12个方程式绘制所有24个辐条,因为每条线通向两个相反的方向辐条。
for i in range(189/3, 189*2/3):
for j in range(267/3, 267*2/3):
if ((i == 189/2) or (j == 267/2) or (i+39 == j or
(i+39+j == 266))) and (( pow((x-i), 2) +
pow((y-j), 2) ) <= pow(r, 2)) :
image2[i][j] = [0, 0, 255]
5.现在是时候查看我们的图像了,所以我们将使用< imshow 函数。
io.imshow(image2)
只需5个步骤,即可越过印度国旗。
整个代码看起来像这样……
"""
@author: geeksforgeeks
"""
# Packages
import skimage
import os
from skimage import io
# Reading image file
image2 = io.imread('C:\Users\KRISHNA\Desktop\index.jpg')
# Setting dimensions boundaries
x = 189 / 2
y = 267 / 2
r = 189 / 6
# Iterating to all the pixels in the set boundaries
for i in range(0, 189):
for j in range(0, 267):
if i in range(0, 189 / 3):
image2[i][j] = [255, 128, 64] # Orange Color
elif i in range(189 / 3, 189 * 2 / 3):
image2[i][j] = [255, 255, 255] # White Color
else:
image2[i][j] = [0, 128, 0] # Green Color
# Equation for 2px thick ring
if (( pow((x-i), 2) + pow((y-j), 2) ) <= pow(r + 1, 2)) and(( pow((x-i), 2) + pow((y-j), 2) ) >= pow(r-2, 2)):
image2[i][j] = [0, 0, 255] # Blue Color
# Iterating within the ring
for i in range(189 / 3, 189 * 2 / 3):
for j in range(267 / 3, 267 * 2 / 3):
# Equation to draw 4 straight lines
if ((i == 189 / 2) or (j == 267 / 2) or (i + 39 == j or (i + 39 + j == 266))) and (( pow((x-i), 2) + pow((y-j), 2) ) <= pow(r, 2)) :
image2[i][j] = [0, 0, 255] # Blue Color
io.imshow(image2) # Output
输出:
如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。