我试图通过使用模板匹配将2个图像拼接在一起找到3组点,我通过这些点来cv2.getAffineTransform()获得一个经线矩阵,我将其传递cv2.warpAffine()到对齐我的图像.
然而,当我加入我的图像时,我的大部分仿射图像都没有显示出来.我已经尝试过使用不同的技术来选择点,改变顺序或参数等等,但我只能得到一张瘦弱的图像来显示.
有人可以告诉我,我的方法是否有效,并建议我可能会出错?任何关于可能导致问题的猜测都将非常感激.提前致谢.
这是我得到的最终结果.下面是原始图像(1,2),并且我使用的代码:
编辑:这是变量的结果 trans
array([[ 1.00768049e+00, -3.76690353e-17, -3.13824885e+00],
[ 4.84461775e-03, 1.30769231e+00, 9.61912797e+02]])
Run Code Online (Sandbox Code Playgroud)
以下是传递给我们的观点cv2.getAffineTransform:unified_pair1
array([[ 671., 1024.],
[ 15., 979.],
[ 15., 962.]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
unified_pair2
array([[ 669., 45.],
[ 18., 13.],
[ 18., 0.]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
import cv2
import numpy as np
def showimage(image, name="No name given"):
cv2.imshow(name, image)
cv2.waitKey(0)
cv2.destroyAllWindows()
return
image_a = cv2.imread('image_a.png')
image_b = cv2.imread('image_b.png')
def get_roi(image):
roi = cv2.selectROI(image) # spacebar to confirm …Run Code Online (Sandbox Code Playgroud) 我geopandas使用 OpenStreetMap 中的形状文件创建了一个简单的地图(链接)。
import geopandas as gpd
map_gdf = gpd.read_file('path_to_shapefile')
map_gdf.plot()
Out:
Run Code Online (Sandbox Code Playgroud)
如何将绘图限制在图像的特定部分,基本上是放大特定位置。我可以通过指定我想在纬度和经度中绘制的地图部分的范围来做到这一点吗?
我正在尝试使用创建一个极坐标投影,matplotlib.pyplot.subplots()但是projection is not defined当我尝试将字典传递给时出现错误matplotlib.pyplot.subplots()
我的代码:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(nrows=1, ncols=2, subplot_kw={projection:'polar'})
Run Code Online (Sandbox Code Playgroud)
但是plt.subplot(1,1,1, projection='polar')按预期工作。文档plt.subplots()说 insubplot_kw将传递给add.subplot()将投影作为可选参数的字典,所以我不确定我的错误是什么。
我想覆盖axes.prop_cycle我正在使用的 matplotlib 样式表中的定义,matplotlib.pyplot.rcParams以避免matplotlib.pyplot.gca().set_prop_cycle(None)在每次调用我正在创建的图时都需要使用这个SO answer 中的建议。
根据文档,我正在使用这样的东西:
import matplotlib.pyplot as plt
plt.style.use('my_custom_stylesheet')
plt.rcParams['axes.prop_cycle'] = plt.cycler('color', ['']) # Equivalent of plt.gca().set_prop_cycle(None)
Run Code Online (Sandbox Code Playgroud)
但是我无法返回axes.prop_cycle以返回到默认值。这是否可能而不必显式 ['k, b, r, ...'] 列出我想使用的所有颜色?
我正在尝试raw_input使用以下代码检查这是三个选项之一的选择:
def selectDiff():
upperbound = 0
difficulty = ['easy', 'medium', 'hard']
diff = raw_input(' or '.join(difficulty)).lower()
if diff in difficulty:
if diff == 'easy':
upperbound = 20
elif diff == 'medium':
upperbound = 25
elif diff == 'hard':
upperbound = 30
else:
print "Please select easy, medium or hard\n"
selectDiff()
return upperbound
Run Code Online (Sandbox Code Playgroud)
如果用户从难度列表中输入值,则['easy','medium','hard']该函数按照我的意愿工作,但如果用户首先输入未包含在列表中的值,则当他们最终输入列表中找到的值时,该变量upperbound将返回为0.我试过移动return语句,但结果是相同的,或者由于在变量被拒绝之前引用变量而得到错误.
是否有可能改变我的方法以产生所需的行为,还是应该使用另一种方法?