【发布时间】:2020-06-13 02:49:51
【问题描述】:
我有一个灰度图像,我使用 cv2 绘制了 4 条线:
但现在我需要沿线条收集像素值,创建“线条轮廓”,创建四个列表,其中的值从左到下写入或从上到下。
我该怎么做?
import cv2
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as img
#defines a scale factor
escala=0.7
cinza_esc = cv2.resize(cinza,None,fx=escala,fy=escala,interpolation=cv2.INTER_LINEAR)
#collect the dimensions of the image
xdim=cinza_esc.shape[1]
ydim=cinza_esc.shape[0]
se=(0,0);ie=(xdim,0);sd=(0,ydim);id=(xdim,ydim)
#line and text attr
cor = (0,0,0) #define a cor (tons de cinza)
fonte = cv2.FONT_HERSHEY_SIMPLEX
tamanho=int(xdim/500)
tipo_lh=cv2.LINE_4
#create the lines
cv2.line(cinza_esc, sd, ie, cor, 2)
cv2.line(cinza_esc, se, id, cor, 2)
cv2.line(cinza_esc, (0,int(ydim/2)), (xdim,int(ydim/2)), cor, 2)
cv2.line(cinza_esc, (int(xdim/2),0), (int(xdim/2),ydim), cor, 2)
#presents image
cv2.imshow("Imagem com as linhas", cinza_esc)
cv2.waitKey(0)
cv2.destroyAllWindows()
【问题讨论】:
-
那么水平线就是图像阵列的相应行,垂直线就是相应的列。对于对角线,您可以查看numpy.diagonal...
-
由于您没有提供生成图像的代码,因此很难给出适当的建议。根据实现,信息可能会丢失。请提供代码以及预期的输出。
-
我编辑了文本以提供代码。
-
在opencv中有一个lineIterator函数