изображение в перспективе трансформации не сдвигается вправо и вверх - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь реализовать следующую функцию, которая преобразует изображение с помощью 4 исходных точек, которые я решаю. проблема в том, что изображение всегда смещается вправо и вверх, чем предполагалось.

В функции точки:

luc=left up column
luw= left up row
ldc=left down column 
# and so on...

Что я делаю в этом проекте:

  1. Я получаю изображение.

  2. Я изменяю размер изображения, чтобы видеть все изображение в cv2.show() (размер изображения изменился 0.25 исходного изображения).

  3. Я выбираю мышью 4 точки на измененном изображении (но дублирует координаты на 4, которые будут отображаться как исходное изображение) и помещаю координаты в преобразование «Перспектива».

Я хотел бы знать, что мне нужно исправить в моем коде, чтобы он мог работать правильно.

Заранее спасибо:)

код:

import cv2;
import numpy as np;
import os;
import csv;
import tkinter as tk;
from tkinter import messagebox;
def get_mouse_position(event,x,y,flags,param):
## Gets mouse position in the image

 if event ==  cv2.EVENT_LBUTTONDOWN:
    column,width = x,y;

    text1.delete(1.0,tk.END);
    text2.delete(1.0,tk.END);

    text1.insert(1.0,str(x*4));
    text2.insert(1.0,str(y*4));

def bilinear_transformation():
##Calculates bilinear transformation and show the transform image
 img=cv2.imread('image1.jpg');
 width,column,ch=img.shape;

 luc=int(luc_e.get());
 luw=int(luw_e.get());
 ldc=int(ldc_e.get());
 ldw=int(ldw_e.get());
 ruc=int(ruc_e.get());
 ruw=int(ruw_e.get());
 rdc=int(rdc_e.get());
 rdw=int(rdw_e.get());

 src_point=np.float32([[luw,luc],[ldw,ldc],[ruw,ruc],[rdw,rdc]]);
 dst_point=np.float32([[0,0],[width,0],[0,column],[width,column]]);
 matrix=cv2.getPerspectiveTransform(src_point,dst_point);

 new_img=cv2.warpPerspective(img,matrix,(column,width));
 new_img=cv2.resize(new_img, (0,0), fx=0.25, fy=0.25);
 cv2.imshow("Perspective transformation",new_img);
 cv2.setMouseCallback("Perspective transformation",get_mouse_position);

Я ожидаю, чтоесли я выберу 4 края бумаги, то на новом изображении я увижу, что края изображения - это точки, которые я выбрал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...