问题描述
我试图了解为什么当itching_detailed.py和stitching_detailed.cpp的逻辑代码非常相似时,会有如此不同的结果。
这是两个代码库的链接
https://github.com/opencv/opencv/blob/master/samples/python/stitching_detailed.py https://github.com/opencv/opencv/tree/master/samples/cpp
问题是,我应如何以及在哪里编辑itching_detailed.py以使其产生与stitching_detailed.cpp一样好的缝合质量?
# """calculate corner and size of time step"""
corners = []
sizes = []
for i in range(len(img_names)):
cameras[i].focal *= 0.9999/work_scale
cameras[i].ppx *= 1/work_scale
cameras[i].ppy *= 1/work_scale
sz = (full_img_sizes[i][0] * 1,full_img_sizes[i][1] * 1)
K = cameras[i].K().astype(np.float32)
roi = warper.warpRoi(sz,K,cameras[i].R)
corners.append(roi[0:2])
sizes.append(roi[2:4])
dst_sz = cv2.detail.resultRoi(corners=corners,sizes=sizes)
blender.prepare(dst_sz)
"""Panorama construction step"""
# https://github.com/opencv/opencv/blob/master/samples/cpp/stitching_detailed.cpp#L725 ?
for idx,name in enumerate(img_names):
corner,image_warped = warper.warp(name,cameras[idx].K().astype(np.float32),cameras[idx].R,cv2.INTER_LINEAR,cv2.BORDER_REFLECT)
p,mask_warped = warper.warp(255 * np.ones((name.shape[0],name.shape[1]),np.uint8),cv2.INTER_NEAREST,cv2.BORDER_CONSTANT)
compensator.apply(idx,corners[idx],image_warped,mask_warped)
mask_warped = cv2.bitwise_and(cv2.resize(cv2.dilate(masks_warped[idx],None),(mask_warped.shape[1],mask_warped.shape[0]),cv2.INTER_LINEAR_EXACT),mask_warped)
blender.feed(cv2.UMat(image_warped.astype(np.int16)),mask_warped,corners[idx])
result,result_mask = blender.blend(None,None)
dst = cv2.normalize(src=result,dst=None,alpha=255.,norm_type=cv2.NORM_MINMAX,dtype=cv2.CV_8U)
我的假设是python的“ blender”功能与c ++混合器不同。我认为,这是一段代码片段,我把它缩小为缩小我的问题的范围。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)