图像扭曲cod错误

2024-09-28 17:24:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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问题。在


Tags: 代码importimgifcountnpzeroswidth
1条回答
网友
1楼 · 发布于 2024-09-28 17:24:03

您现在可能已经解决了这个问题,但我相信您的问题是一个简单的基于0和基于1的错误。Python索引从零开始,但是您的range从1开始。您可以修改您的range调用,使其从0开始,但这会弄乱您的数学。相反,在访问img数组时只需减去1:

        img[x-1,y-1]=img[x-1+dx,y-1]

相关问题 更多 >