1,读入并对图片进行旋转复位
'''对图片进行归位'''
import cv2
# Reading the image
image = cv2.imread('222.png')
# dividing height and width by 2 to get the center of the image
height, width = image.shape[:2]
# get the center coordinates of the image to create the 2D rotation matrix
center = (width/2, height/2)
# using cv2.getRotationMatrix2D() to get the rotation matrix
rotate_matrix = cv2.getRotationMatrix2D(center=center, angle=270, scale=1)
# rotate the image using cv2.warpAffine
rotated_image = cv2.warpAffine(src=image, M=rotate_matrix, dsize=(width, height))
cv2.imshow('Original image', image)
cv2.imshow('Rotated image', rotated_image)
# wait indefinitely, press any key on keyboard to exit
cv2.waitKey(0)
# save the rotated image to disk
cv2.imwrite('rotated_image.jpg', rotated_image)
效果
2,通过改变颜色的堆叠次序,显示原来的颜色
#颜色变为原本的颜色
import cv2
import numpy as np
# 加载图像
img = cv2.imread('222.png')
# 将rgb顺序改为bgr
img_bgr = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
# 分离通道
blue, green, red = cv2.split(img_bgr)
# 将blue和green通道互换
img_swap = cv2.merge([green, blue, red])
# 显示图像
cv2.imshow('Original Image', img_bgr)
cv2.imshow('Swapped Image', img_swap)
# 等待按键
cv2.waitKey(0)
cv2.destroyAllWindows()
结果
3,把切分为三分后的颜色通道的灰度图进行拼接
from PIL import Image
'''裁剪图片为三等分'''
def crop(url):
from PIL import Image
# 打开原始图片
img = Image.open(url)
# 获取图片宽度和高度
width, height = img.size
# 计算每份的宽度
section_width = width // 3
# 裁剪并保存每一份图片
for i in range(3):
left = i * section_width
top = 0
right = left + section_width
bottom = height
section = img.crop((left, top, right, bottom))
section.save("section{}.png".format(i))
global result,width,height,im2
'''大致思路(不一定对)
把原来正确的图片分为三等分,把分别提取每一个图片的R,G,B通道的灰度图,再新建一个空白图片,
把这些灰度图paste到空白图片即可,注意坐标。原点坐标在左上角(0,0)
'''
#获取正确图片的宽高
# 读取正确图片,获得宽高
im2 = Image.open("rightOrigin.png")
# 获取图片的宽度和高度
width, height = im2.size
#新建一个图像
result = Image.new("RGB", (width, height), (255, 255, 255))
'''获取第一个图像的灰度图R'''
def getR():
# 读取图片
im = Image.open("section0.png")
# 将图片分为红、绿、蓝三个通道
rgb_im = im.convert('RGB')
r, g, b = rgb_im.split()
# 将R通道图像转换为灰度图
r_gray = r.convert('L')
print(width, height)
# 将灰度图拼接到新建的图像上
result.paste(r_gray, (int(width/3+width/3), 0))
'''获取第二个图像的灰度图G'''
def getG():
from PIL import Image
global result
# 读取图片
im = Image.open("section1.png")
# 将图片分为红、绿、蓝三个通道
rgb_im = im.convert('RGB')
r, g, b = rgb_im.split()
# 将R通道图像转换为灰度图
g_gray = g.convert('L')
print(width, height)
# 将灰度图拼接到新建的图像上
result.paste(g_gray, (int(width/3), 0))
'''获取第三个图像B'''
def getB():
from PIL import Image
global result
# 读取图片
im = Image.open("section2.png")
# 将图片分为红、绿、蓝三个通道
rgb_im = im.convert('RGB')
r, g, b = rgb_im.split()
# 将R通道图像转换为灰度图
b_gray = b.convert('L')
print(width, height)
# 将灰度图拼接到新建的图像上
result.paste(b_gray, (0,0))
crop("原始图片的地址")
getR()
getG()
getB()
# 保存拼接后的图像
result.save("result.jpg")
效果
4,请使用Python语句把拼接后的图像组成以浅灰色为背景的正方形图像。
from PIL import Image
# 打开原始图片
img = Image.open("rightOrigin.png")
# 将颜色模式转换为RGB
img_rgb = img.convert("RGB")
# 获取图片像素数据
pixels = img_rgb.load()
# 更改每个像素的颜色值
for i in range(img.width):
for j in range(img.height):
r, g, b = pixels[i, j]
avg = (r + g + b) // 3
pixels[i, j] = (avg, avg, avg)
# 保存新的图片
img_rgb.save("new_example.jpg")
#
# 在此示例中,我们使用Python的PIL库打开原始图片,并将其颜色模式转换为RGB。然后,我们使用load()函数获取图片的像素数据。
# 接着,我们使用两个循环遍历所有像素,并更改每个像素的颜色值,将其转换为平均灰度。最后,我们将修改后的图像保存到磁盘上。
#
# 请注意,该代码可以将彩色图像转换为灰度图像。如果您只想更改图像的整体颜色,可以将像素颜色值替换为所需的颜色即可。
效果