[Python & OpenCV]图片拼接程序

今天急需拼接几张差不多大小的图片,于是应用Opencv的一部分知识自己做了个程序:
1
可以随意拼接图片(横着、竖着、任意指定图片个数)
源码如下:

import cv2
import numpy as np                         
import os
import pytesseract
from matplotlib import pyplot as plt
from PIL import Image



def image_add(image1,image2):
    h1,w1,c1 = image1.shape
    h2,w2,c2 = image2.shape
    if c1 != c2:
        print("channels NOT match, cannot merge")
        return 
    else:
        if w1 > w2:
            tmp = np.zeros([h2,w1-w2,c1])
            #image3 = np.hstack([image2,tmp])#水平
            image4 = np.vstack([image1,image2])#竖直
        elif w1 == w2:
            #image3 = np.hstack([image1,image2])
            image4 = np.vstack([image1,image2])
        else:
            tmp = np.zeros([h1,w2-w1,c2])
            #image3 = np.hstack([image1,tmp])
            image4 = np.vstack([image3,image2])
    
    #cv2.imshow('image3',image3)
    #cv2.imshow('image4',image4)
    cv2.imwrite(r"H:/Collected/95.jpg",image4)        #保存图像(“路径”,图像)

    print('OK!!!!!!')
    #cv2.waitKey(0)
    #return image3



def Test():
    filename = input("Please Input Your Image : \n")
    image = cv2.imread(filename,1)
    x,y,z = image.shape
    img = np.reshape(image,[x,y-1000])
    cv2.imshow("image",image)
    cv2.imshow("img",img)



def Process():
    N = int(input("How Many Pictures Do You Want To Stitch,But Please Don't Exceed Ten: \n"))
    if N > 10:
        print("Too Many Pictures You Entered!!!!!!!!!")
    else:
        filename = [0,0,0,0,0,0,0,0,0,0]
        image = [0,0,0,0,0,0,0,0,0,0]
        ave_H = 0
        ave_S = 0
        for i  in range(N):
            filename[i] = input("Please Input Your Image : \n")
            image[i] = cv2.imread(filename[i],1)
        mode = input("Please select stitching mode H or S: \n")
        Result = image[0]
        if mode == 'H':
            for i in range(N):
                ave_H = ave_H + int(image[i].shape[0] / N)
            print("%d"%(ave_H))
            #print("%d"%(image[0].shape[0]))
            for i in range(N-1):
                Result = np.hstack([Result,image[i+1]])
        if mode == 'S':
            for i in range(N):
                ave_S = ave_S + int(image[i].shape[1] / N)
            print("%d"%(ave_S))
            #print("%d"%(image[0].shape[1]))
            for i in range(N-1):
                Result = np.vstack([Result,image[i+1]])
    storeADD = input("Please Input A Storage Location : \n")
    cv2.imwrite(storeADD,Result)       


Process()

有想要打包exe程序的可以私信我。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值