opencv-python 图像最简单拼接

使用场景:根据固定左上、右下、坐标点进行标准矩形截图,对截图进行你想要的处理,再拼接回去。

很多时候我们需要使用代码自动进行图像的某一部分处理,处理之后还要再拼接回来,为了避免手动重复工作

原图如下:

opencv-python 图像最简单拼接_第1张图片

截图后:

opencv-python 图像最简单拼接_第2张图片

截图后处理:粉色的小星星是我自己画的

opencv-python 图像最简单拼接_第3张图片

最后拼接回去

opencv-python 图像最简单拼接_第4张图片

实现代码:

截图部分:

import cv2


def cv_show(neme, img):
    # 调整宽高(再次运行也只会加载你调整后的宽高)
    # cv2.namedWindow(neme, cv2.WINDOW_NORMAL)
    cv2.imshow(neme, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


# 读取图像
img = cv2.imread("T.jpg")

# 第一张 左上 右下 坐标点
# 565 7
# 696 177
x1, y1, x2, y2 = 565, 7, 696, 177

# 截图 y1 y2 x1 x2
image1 = img[y1:y2, x1:x2]

# 存储 截图 左上 右下 坐标
with open("xy.txt", "w") as f:
    f.write("{} {} {} {} ".format(x1, y1, x2, y2))

cv_show("1", image1)

cv2.imwrite("T0.jpg", image1)
print("图像裁剪完成")

拼接截图:

import cv2
import numpy as np
import os

def cv_show(neme, img):
    # cv2.namedWindow(neme, cv2.WINDOW_NORMAL)
    cv2.imshow(neme, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


# 读取原图的大小
img = cv2.imread("T.jpg")

# 读取截图
img1 = cv2.imread("T1.jpg")

# 创建一个纯黑的大图
mage = np.zeros((img.shape[0], img.shape[1], 3), np.uint8)

# 读取截图的坐标
with open("xy.txt", "r") as f:
    data = f.read()
    # print(data)

# 默认空格分割
x1, y1, x2, y2 = data.split()
# print(x1, y1, x2, y2)

# # 将要拼接的两张图像覆盖到大图上
# 截图顺序y1 y2 x1 x2
mage[:] = img
mage[int(y1):int(y2), int(x1):int(x2)] = img1

cv_show("s", mage)
# 保存图像
cv2.imwrite('T2.jpg', mage)
# 删除xy.txt
os.remove("xy.txt")
print("图像拼接完成")

你可能感兴趣的:(opencv-python,常用小工具,opencv,python,计算机视觉)