【发布时间】:2017-09-20 22:06:09
【问题描述】:
有没有一种简单的方法可以将OpenCV的图像坐标系原点更改为左下角?例如使用numpy?我正在使用 OpenCv 2.4.12 和 Python 2.7。
相关:Numpy flipped coordinate system,但这里只讨论显示。我想要一些我可以在我的算法中始终如一地使用的东西。
更新:
def imread(*args, **kwargs):
img = plt.imread(*args, **kwargs)
img = np.flipud(img)
return img
#read reference image using cv2.imread
imref=cv2.imread('D:\\users\\gayathri\\all\\new\\CoilA\\Resized_Results\\coilA_1.png',-1)
cv2.circle(imref, (0,0),30,(0,0,255),2,8,0)
cv2.imshow('imref',imref)
#read the same image using imread function
im=imread('D:\\users\\gayathri\\all\\new\\CoilA\\Resized_Results\\coilA_1.png',-1)
img= im.copy()
cv2.circle(img, (0,0),30,(0,0,255),2,8,0)
cv2.imshow('img',img)
如图所示,圆在原始图像和翻转图像的左上角原点处绘制。但是图像看起来翻转了,这是我不希望的。
【问题讨论】:
-
只需在 OpenCV 调用后更改
y的值,除非您打算自己更改 OpenCV 源代码,这可能工作量太大。 -
@ZdaR 我认为 OpenCV 以左上角为原点。
-
numpy.flip(img, axis=0)或numpy.flpud(img)怎么样(假设img是图像数组)? -
如果 OP 可以有效地沿 x 轴翻转矩阵会怎样?这将是一次性操作,并且考虑到操作成本不高,可以达到目的吗?
-
我没有发现问题。底部图像按照原始问题的要求翻转?!相对于原始图像,您的圆圈位于左下角。如果要以原始方向显示图像,则在调用
imshow之前翻转:def imshow(name, array): return cv.imshow(name, np.flipud(array))
标签: python-2.7 opencv matplotlib