我试图检测停车线,如下所示
我希望得到的是交叉线上清晰的线条和(x,y)位置,但结果并不是很有希望
我想这是由于两个主要原因
有些线条非常破碎或缺失甚至人眼都可以清楚地识别它们.(即使HoughLine可以帮助连接一些丢失的行,因为HoughLine有时会将不必要的行连接在一起,所以我宁愿手动完成它)
有一些重复的线条
工作的一般管道如下所示
import cv2
import numpy as np
import matplotlib
from matplotlib.pyplot import imshow
from matplotlib import pyplot as plt
# white color mask
img = cv2.imread(filein)
#converted = convert_hls(img)
image = cv2.cvtColor(img,cv2.COLOR_BGR2HLS)
lower = np.uint8([0, 200, 0])
upper = np.uint8([255, 255, 255])
white_mask = cv2.inRange(image, lower, upper)
# yellow color mask
lower = np.uint8([10, 0, 100])
upper = np.uint8([40, 255, 255])
yellow_mask = cv2.inRange(image, lower, upper)
# combine the mask
mask = cv2.bitwise_or(white_mask, yellow_mask) …Run Code Online (Sandbox Code Playgroud) 我试图将我的数据集拆分为训练和测试数据集,但我收到此错误:
X_train,X_test,Y_train,Y_test = sklearn.cross_validation.train_test_split(X,df1['ENTRIESn_hourly'])
Run Code Online (Sandbox Code Playgroud)
AttributeError Traceback (most recent call last)
<ipython-input-53-5445dab94861> in <module>()
----> 1 X_train,X_test,Y_train,Y_test = sklearn.cross_validation.train_test_split(X,df1['ENTRIESn_hourly'])
AttributeError: module 'sklearn' has no attribute 'cross_validation'
Run Code Online (Sandbox Code Playgroud)
我怎么处理这个?
我正在尝试从2d立体图像中理解3d点重建的基础知识.到目前为止我所理解的可归纳如下:
对于3d点(深度图)重建,我们需要来自2个不同视图的同一对象的2个图像,给定这样的图像对我们还需要相机矩阵(比如P1,P2)
我们使用SIFT或SURF等方法在两个图像中找到相应的点.
在得到相应的关键点后,我们发现使用最少8个关键点(用于8点算法)找到基本矩阵(比如K)
鉴于我们在相机1,计算相机2的参数使用基本矩阵返回4个可能的相机参数
最后,我们使用三角测量法使用相应的点和两个相机参数进行三维点估计.
在完成理论部分后,作为我的第一个实验,我尝试运行此处提供的代码,其工作正常.在example.py代码中进行了一些修改后,我尝试在所有连续图像对上运行此示例,并合并三维点云以进行对象(dino)的三维重建,如下所示:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import cv2
from camera import Camera
import structure
import processor
import features
def dino():
# Dino
img1 = cv2.imread('imgs/dinos/viff.003.ppm')
img2 = cv2.imread('imgs/dinos/viff.001.ppm')
pts1, pts2 = features.find_correspondence_points(img1, img2)
points1 = processor.cart2hom(pts1)
points2 = processor.cart2hom(pts2)
fig, ax = plt.subplots(1, 2)
ax[0].autoscale_view('tight')
ax[0].imshow(cv2.cvtColor(img1, cv2.COLOR_BGR2RGB))
ax[0].plot(points1[0], points1[1], 'r.')
ax[1].autoscale_view('tight')
ax[1].imshow(cv2.cvtColor(img2, cv2.COLOR_BGR2RGB))
ax[1].plot(points2[0], points2[1], 'r.')
fig.show()
height, width, ch = …Run Code Online (Sandbox Code Playgroud) 这是remap()最简单的测试用例:
import cv2
import numpy as np
inimg = np.arange(2*2).reshape(2,2).astype(np.float32)
inmap = np.array([[0,0],[0,1],[1,0],[1,1]]).astype(np.float32)
outmap = np.array([[10,10],[10,20],[20,10],[20,20]]).astype(np.float32)
outimg = cv2.remap(inimg,inmap,outmap,cv2.INTER_LINEAR)
print "inimg:",inimg
print "inmap:",inmap
print "outmap:",outmap
print "outimg:", outimg
Run Code Online (Sandbox Code Playgroud)
这是输出:
inimg: [[ 0. 1.]
[ 2. 3.]]
inmap: [[ 0. 0.]
[ 0. 1.]
[ 1. 0.]
[ 1. 1.]]
outmap: [[ 10. 10.]
[ 10. 20.]
[ 20. 10.]
[ 20. 20.]]
outimg: [[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]
Run Code Online (Sandbox Code Playgroud)
如你所见,outimg产生0,0,它甚至没有正确的形状.我期望20x20或10x10图像的插值从0到3.
我已经阅读了所有文档.它和SO上的每个人都会输入一个起始点的数组(地图),一个结束点的地图,然后重映射()会将img中的所有值放入新的位置,插入任何空白空间.我这样做,但它不起作用.为什么?大多数示例都适用于C++.它在python中被打破了吗?
假设我有一个 pandas 数据框,例如
df_p = pd.DataFrame(
{'name_array':
[[20130101, 320903902, 239032902],
[20130101, 3253453, 239032902],
[65756, 4342452, 32425432523]],
'name': ['a', 'a', 'c']} )
Run Code Online (Sandbox Code Playgroud)
我想提取包含每行中的展平数组的系列,同时保留顺序
预期结果是pandas.core.series.Series
这个问题不是重复的,因为我的预期输出是 pandas 系列,而不是数据框。
嗨,我目前正在图像转换,但是关于变形我有一件事我不明白。即warpAffine()和之间有什么区别warpPerspective()?
那样的话,我根本不是说转换中的区别是什么。我的问题是为什么我可以在上述两个函数中使用相同的转换矩阵(3x3)?并且输出是否相同(如果使用相同的转换矩阵运行)
或何时使用一个,何时另一个?
我已将图像调整为大小newX, newY.在调整大小之前,我有一点意见(x,y).现在我已经调整了我的图像大小,我想知道新图像的重点.听起来很简单,但我的数学很差.有任何想法吗?
我试图通过使用模板匹配将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) 我正在创建一个频率图,其中也绘制了 NA 值。我试图在 x 轴刻度中以不同的方式为 N/A 值着色。我知道如何在 matplotlib 中做到这一点,但似乎无法弄清楚如何使用 plotly 来做到这一点。
我尝试使用值列表更新 tickcolors 和 tickfonts,但它只需要这两个属性的单个值。请看下面的代码
# Doesn't work - plotly expects a single value for tickcolor
fig.update_xaxes(
tickangle = -60,
tickcolor = ['black', 'black', 'black', 'black', 'red']
)
# In matplotlib the following code works fine
# It checks the text for xticklabels and changes color if it equals 'N/A'
_ = [xl.set_color('red') for xl in plt.gca().get_xticklabels() if xl.get_text() == 'N/A / Missing']
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样 - 这是我的 matplotlib 代码预期输出的输出
OpenCV具有matchTemplate()通过在输出上滑动模板输入并生成与匹配项对应的数组输出来运行的功能。
在哪里可以了解有关如何解释六个TemplateMatchModes的更多信息?
我已根据本教程通读并实现了代码,但除了理解一个人在寻找TM_SQDIFF匹配的最小结果而在其余情况中寻找最大的结果之外,我不知道如何解释不同的方法以及一个方法的情况。会选择一个。
例如(取自本教程)
res = cv.matchTemplate(img_gray, template, cv.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where(res >= threshold)
Run Code Online (Sandbox Code Playgroud)
和
R(x,y)= ?x?,y? (T?(x?,y?) ? I?(x+x?,y+y?))
?????????????????????????????????-------------
sqrt(?x?,y? T?(x?,y?)^2 ? ?x?,y? I?(x+x?,y+y?)^2)
Run Code Online (Sandbox Code Playgroud)
(摘自文档页面;不确定如何进行公式格式化)
我推断这TM_CCOEFF_NORMED将返回0到1之间的值,并且0.8阈值是任意的,但这只是假设。
是否需要更深入地研究在线方程式,针对标准数据集的性能度量,或有关不同模式以及何时以及为何使用一种模式的学术论文?
我想知道是否可以将图像分成块,例如 8x8 块(64 pixels per block)并为每个块执行直方图功能并将结果保存到新图像中而不是单独的图像?
def apply_histogram(block):
h, b = np.histogram(block.flatten(), 256, normed=True)
cdf = h.cumsum()
cdf = 255 * cdf / cdf[-1]
return np.interp(block.flatten(), b[:-1], cdf).reshape(block.shape)
Run Code Online (Sandbox Code Playgroud) 我有这个代码。它获取图像并在定义的点上绘制椭圆。就像这个示例一样。但我正在努力弄清楚如何填充颜色?
def annotate_image(annotations, i):
file_name = annotations[i][0]
PATH= "/content/content/train/Class1_def/"+file_name+'.png'
img=cv2.imread(PATH)
#print(img.shape)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
semi_major= int(float(annotations[i][1]))
semi_minor= int(float(annotations[i][2]))
rotation= int(float(annotations[i][3]))
x_pos_ellip= int(float(annotations[i][4]))
y_pos_ellip= int(float(annotations[i][5]))
center_coordinates= (x_pos_ellip, y_pos_ellip)
axesLength= (semi_major,semi_minor)
angle= int(float(rotation))
startAngle = 0
endAngle = 360
# Red color
color = (255, 0, 0)
# Line thickness
thickness = 2
cv2.ellipse(img, center_coordinates, axesLength,
angle, startAngle, endAngle, color, thickness)
return img
Run Code Online (Sandbox Code Playgroud) python ×10
opencv ×7
convolution ×1
flatten ×1
matplotlib ×1
numpy ×1
pandas ×1
plotly ×1
remap ×1
scikit-learn ×1
series ×1
transform ×1