编程实现二进制数据的读写:
代码实现:
from skimage
import io
file_name
= 'morty.jpg'
morty
= io
.imread
(fname
=file_name
)
file_name
= 'panda.jpg'
panda
= io
.imread
(fname
=file_name
)
print(morty
.shape
)
print(panda
.shape
)
生成一幅图像并显示:
代码实现:
import turtle
as t
t
.pensize
(4)
t
.hideturtle
()
t
.colormode
(255)
t
.color
((255, 155, 192), "pink")
t
.setup
(840, 500)
t
.speed
(10)
t
.pu
()
t
.goto
(-100, 100)
t
.pd
()
t
.seth
(-30)
t
.begin_fill
()
a
= 0.4
for i
in range(120):
if 0 <= i
< 30 or 60 <= i
< 90:
a
= a
+ 0.08
t
.lt
(3)
t
.fd
(a
)
else:
a
= a
- 0.08
t
.lt
(3)
t
.fd
(a
)
t
.end_fill
()
t
.pu
()
t
.seth
(90)
t
.fd
(25)
t
.seth
(0)
t
.fd
(10)
t
.pd
()
t
.pencolor
(255, 155, 192)
t
.seth
(10)
t
.begin_fill
()
t
.circle
(5)
t
.color
(160, 82, 45)
t
.end_fill
()
t
.pu
()
t
.seth
(0)
t
.fd
(20)
t
.pd
()
t
.pencolor
(255, 155, 192)
t
.seth
(10)
t
.begin_fill
()
t
.circle
(5)
t
.color
(160, 82, 45)
t
.end_fill
()
t
.color
((255, 155, 192), "pink")
t
.pu
()
t
.seth
(90)
t
.fd
(41)
t
.seth
(0)
t
.fd
(0)
t
.pd
()
t
.begin_fill
()
t
.seth
(180)
t
.circle
(300, -30)
t
.circle
(100, -60)
t
.circle
(80, -100)
t
.circle
(150, -20)
t
.circle
(60, -95)
t
.seth
(161)
t
.circle
(-300, 15)
t
.pu
()
t
.goto
(-100, 100)
t
.pd
()
t
.seth
(-30)
a
= 0.4
for i
in range(60):
if 0 <= i
< 30 or 60 <= i
< 90:
a
= a
+ 0.08
t
.lt
(3)
t
.fd
(a
)
else:
a
= a
- 0.08
t
.lt
(3)
t
.fd
(a
)
t
.end_fill
()
t
.color
((255, 155, 192), "pink")
t
.pu
()
t
.seth
(90)
t
.fd
(-7)
t
.seth
(0)
t
.fd
(70)
t
.pd
()
t
.begin_fill
()
t
.seth
(100)
t
.circle
(-50, 50)
t
.circle
(-10, 120)
t
.circle
(-50, 54)
t
.end_fill
()
t
.pu
()
t
.seth
(90)
t
.fd
(-12)
t
.seth
(0)
t
.fd
(30)
t
.pd
()
t
.begin_fill
()
t
.seth
(100)
t
.circle
(-50, 50)
t
.circle
(-10, 120)
t
.circle
(-50, 56)
t
.end_fill
()
t
.color
((255, 155, 192), "white")
t
.pu
()
t
.seth
(90)
t
.fd
(-20)
t
.seth
(0)
t
.fd
(-95)
t
.pd
()
t
.begin_fill
()
t
.circle
(15)
t
.end_fill
()
t
.color
("black")
t
.pu
()
t
.seth
(90)
t
.fd
(12)
t
.seth
(0)
t
.fd
(-3)
t
.pd
()
t
.begin_fill
()
t
.circle
(3)
t
.end_fill
()
t
.color
((255, 155, 192), "white")
t
.pu
()
t
.seth
(90)
t
.fd
(-25)
t
.seth
(0)
t
.fd
(40)
t
.pd
()
t
.begin_fill
()
t
.circle
(15)
t
.end_fill
()
t
.color
("black")
t
.pu
()
t
.seth
(90)
t
.fd
(12)
t
.seth
(0)
t
.fd
(-3)
t
.pd
()
t
.begin_fill
()
t
.circle
(3)
t
.end_fill
()
t
.color
((255, 155, 192))
t
.pu
()
t
.seth
(90)
t
.fd
(-95)
t
.seth
(0)
t
.fd
(65)
t
.pd
()
t
.begin_fill
()
t
.circle
(30)
t
.end_fill
()
t
.color
(239, 69, 19)
t
.pu
()
t
.seth
(90)
t
.fd
(15)
t
.seth
(0)
t
.fd
(-100)
t
.pd
()
t
.seth
(-80)
t
.circle
(30, 40)
t
.circle
(40, 80)
t
.color
("red", (255, 99, 71))
t
.pu
()
t
.seth
(90)
t
.fd
(-20)
t
.seth
(0)
t
.fd
(-78)
t
.pd
()
t
.begin_fill
()
t
.seth
(-130)
t
.circle
(100, 10)
t
.circle
(300, 30)
t
.seth
(0)
t
.fd
(230)
t
.seth
(90)
t
.circle
(300, 30)
t
.circle
(100, 3)
t
.color
((255, 155, 192), (255, 100, 100))
t
.seth
(-135)
t
.circle
(-80, 63)
t
.circle
(-150, 24)
t
.end_fill
()
t
.color
((255, 155, 192))
t
.pu
()
t
.seth
(90)
t
.fd
(-40)
t
.seth
(0)
t
.fd
(-27)
t
.pd
()
t
.seth
(-160)
t
.circle
(300, 15)
t
.pu
()
t
.seth
(90)
t
.fd
(15)
t
.seth
(0)
t
.fd
(0)
t
.pd
()
t
.seth
(-10)
t
.circle
(-20, 90)
t
.pu
()
t
.seth
(90)
t
.fd
(30)
t
.seth
(0)
t
.fd
(237)
t
.pd
()
t
.seth
(-20)
t
.circle
(-300, 15)
t
.pu
()
t
.seth
(90)
t
.fd
(20)
t
.seth
(0)
t
.fd
(0)
t
.pd
()
t
.seth
(-170)
t
.circle
(20, 90)
t
.pensize
(10)
t
.color
((240, 128, 128))
t
.pu
()
t
.seth
(90)
t
.fd
(-75)
t
.seth
(0)
t
.fd
(-180)
t
.pd
()
t
.seth
(-90)
t
.fd
(40)
t
.seth
(-180)
t
.color
("black")
t
.pensize
(15)
t
.fd
(20)
t
.pensize
(10)
t
.color
((240, 128, 128))
t
.pu
()
t
.seth
(90)
t
.fd
(40)
t
.seth
(0)
t
.fd
(90)
t
.pd
()
t
.seth
(-90)
t
.fd
(40)
t
.seth
(-180)
t
.color
("black")
t
.pensize
(15)
t
.fd
(20)
t
.pensize
(4)
t
.color
((255, 155, 192))
t
.pu
()
t
.seth
(90)
t
.fd
(70)
t
.seth
(0)
t
.fd
(95)
t
.pd
()
t
.seth
(0)
t
.circle
(70, 20)
t
.circle
(10, 330)
t
.circle
(70, 30)
t
.done
()
ts
= t
.getscreen
()
ts
.getcanvas
().postscript
(file="PeppaPig.eps")
图像结果:
需将EPS文件转为JPG,在线转换网址为:EPS2JPG
改变“传输函数”(伪彩色),将图像变成“彩色”,并进一步了解其工作原理。
方法一:强度分层:
代码实现:
import numpy
as np
from skimage
import io
,exposure
,color
import matplotlib
.pyplot
as plt
import math
import sys
gray_morty
= color
.rgb2gray
(morty
)
plt
.subplot
(131)
plt
.imshow
(gray_morty
,cmap
='gray')
rows
,cols
= gray_morty
.shape
labels
= np
.zeros
([rows
,cols
])
for i
in range(rows
):
for j
in range(cols
):
if(gray_morty
[i
,j
] < 0.2):
labels
[i
,j
] = 0
elif(gray_morty
[i
,j
] < 0.4):
labels
[i
,j
] = 1
elif(gray_morty
[i
,j
] < 0.6):
labels
[i
,j
] = 2
elif(gray_morty
[i
,j
] < 0.8):
labels
[i
,j
] = 3
else:
labels
[i
,j
] = 4
cols_morty
= color
.label2rgb
(labels
)
plt
.subplot
(132)
plt
.imshow
(cols_morty
)
plt
.subplot
(133)
plt
.imshow
(morty
)
plt
.show
()
图像结果:
从左至右分别为灰度图像,伪彩色图像,原图。
方法二:灰度值到彩色变换:
代码实现:
import numpy
as np
from skimage
import io
,exposure
,color
import matplotlib
.pyplot
as plt
import math
import sys
L
= 255
def GetR(gray
):
if gray
< L
/2:
return 0
elif gray
> L
/4*3:
return L
else:
return 4*gray
-2*L
def GetG(gray
):
if gray
< L
/4:
return 4*gray
elif gray
> L
/4*3:
return 4*L
-4*gray
else:
return L
def GetB(gray
):
if gray
< L
/4:
return L
elif gray
> L
/2:
return 0
else:
return 2*L
-4*gray
gray_morty
= color
.rgb2gray
(morty
)*255
color_morty
= np
.zeros
(morty
.shape
,dtype
= 'uint8')
for ii
in range(morty
.shape
[0]):
for jj
in range(morty
.shape
[1]):
r
,g
,b
= GetR
(gray_morty
[ii
,jj
]),GetG
(gray_morty
[ii
,jj
]),GetB
(gray_morty
[ii
,jj
])
color_morty
[ii
,jj
,:] = (r
,g
,b
)
plt
.subplot
(121)
plt
.imshow
(gray_morty
,cmap
='gray')
plt
.subplot
(122)
plt
.imshow
(color_morty
)
plt
.show
()
图像结果:
从左至右分别为:灰度图像,彩色变换后图像。
转载请注明原文地址:https://blackberry.8miu.com/read-17148.html