python opencv图片拼接源码
2021/8/5 17:06:37
本文主要是介绍python opencv图片拼接源码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
import cv2 import numpy as np import time def image_handle(image): gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) grayshape=gray.shape print('图片大小',grayshape) high=grayshape[0] width=grayshape[1] cuty1=500 cuty2=0 gray_cut = gray[cuty1:int(high)-cuty2, int(width/2)-100:int(width/2)+100] gray_sample = gray[int(high)-20:int(high), int(width/2)-100:int(width/2)+100] print('采样区平均像素值:',np.mean(gray_sample)) sample_value = np.mean(gray_sample) ret, binary = cv2.threshold(gray_cut, sample_value - 15, 255, cv2.THRESH_BINARY) print("threshold value %s" % ret) img_300x300 = cv2.copyMakeBorder(binary, 30, 30, 30, 30, cv2.BORDER_CONSTANT, value=255) contours, heriachy = cv2.findContours(img_300x300, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) for i in range(len(contours)): cv2.drawContours(img_300x300, contours, i, 128, 2) mylist = [] for i in range(len(contours)): if len(contours[i]) > 5: mylist.append(i) dx = [] dy = [] for j in range(len(mylist)): a = contours[mylist[j]] for i in range(len(a)): b = a[i] c = b[0] if (c[0] > 226): dx.append(c[0]) dy.append(c[1]) ndy = len(dy) di = 0 for i in range(ndy): if dy[i - di] < (max(dy) - 3): del dy[i - di] del dx[i - di] di = di + 1 dxa = np.mean(dx)+int(width/2)-100-30 dya = np.mean(dy)+cuty1-30 return dxa,dya def image_stitching(image_after,image2_before): m1 = image_handle(image_after) # cv2.circle(image_after, (int(m1[0]), int(m1[1])), 10, (0, 0, 255), -1) m2 = image_handle(image2_before) # cv2.circle(image2_before, (int(m2[0]), int(m2[1])), 10, (0, 0, 255), -1) d = int(m1[1] - m2[1]) print(d) image2_shape = image2_before.shape print('图片大小', image2_shape) high = image2_shape[0] width = image2_shape[1] image2_before1 = image2_before[0:high - d, 0:width] image2_before2 = cv2.copyMakeBorder(image2_before1, d, 0, 0, 0, cv2.BORDER_CONSTANT, value=0) img_stitching = np.where(image_after < image2_before2, image2_before2, image_after) return img_stitching if __name__ == "__main__": start = time.time() print(start) src = cv2.imread('po3_I135.jpg') src1 = cv2.imread('po1_I135.jpg') src3=image_stitching(src,src1) cv2.namedWindow('dddddd', 0) cv2.imshow('dddddd', src3) print(time.time()-start) cv2.waitKey(0)
这篇关于python opencv图片拼接源码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享