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)

效果

python裁切hdr python opencv 裁剪_python


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()

结果

python裁切hdr python opencv 裁剪_opencv_02


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")

效果

python裁切hdr python opencv 裁剪_opencv_03


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()函数获取图片的像素数据。
# 接着,我们使用两个循环遍历所有像素,并更改每个像素的颜色值,将其转换为平均灰度。最后,我们将修改后的图像保存到磁盘上。
#
# 请注意,该代码可以将彩色图像转换为灰度图像。如果您只想更改图像的整体颜色,可以将像素颜色值替换为所需的颜色即可。

效果

python裁切hdr python opencv 裁剪_opencv_04