import cv2
import numpy as np
point=np.zeros((32,2),np.float32)
point2=np.zeros((32,2),np.float32)
count=0
def click(event, x, y, flags, param):
global count
global x1,x2,y1,y2
if event == cv2.EVENT_LBUTTONDOWN:
if count%2==0:
point[count,0] = x
point[count,1] = y
print (x,y)
x1=x
y1=y
count+=1
else:
point2[count,0] = x
point2[count,1] = y
print (x,y)
x2=x
y2=y
count+=1
mophing()
def mophing():
height,width,channel = img.shape
for y in range (height):
for x in range (1,width):
if(x<x1):
xratio=x/x1
else:
xratio=(width-x)/(width-x1)
dx=int((xratio)*(x2-x1))
img[x,y]=img[x+dx,y]
#Result
cv2.imshow('change', img)
img = cv2.imread('messigray.png')
cv2.namedWindow('original')
cv2.setMouseCallback('original', click )
cv2.imshow('original', img)
cv2.waitKey()
这是我的Python代码 我用mouseEvent检查了一些示例图片中的point1和point2, 我想在两个点击指针之间弯曲。 然后我写了一个程序,只改变X tab的值。 但是,运行此代码时,将打印底部的结果。在
^{pr2}$在结果中,以上两个值是两个单击点的坐标 我想知道最后一行代码的问题和解决方法。 我想知道这段代码是NumPy问题还是OpenCV问题。在
您现在可能已经解决了这个问题,但我相信您的问题是一个简单的基于0和基于1的错误。Python索引从零开始,但是您的
range
从1开始。您可以修改您的range
调用,使其从0开始,但这会弄乱您的数学。相反,在访问img
数组时只需减去1:相关问题 更多 >
编程相关推荐