S1asH
Апрель 6, 2010 02:57:03
Помогите переписал код с С на путон но возникают какие то проблемы при компиляции
вот код:
from opencv import cv, highgui, adaptors
from PIL import Image, ImageOps, ImageEnhance
im=cvLoadImage(“file.jpg”)
rot_mat=cvCreateMat(2,3,CV_32FC1)
warp_mat=cvCreateMat(2,3,CV_32FC1)
dst=cvCloneImage(im)
cvZero(dst)
pil_im = adaptors.Ipl2PIL(im)
srctri=[(0,0),(pil_im.size-1,0),(0,pil_im.size-1)]
dsttri=[(pil_im.size*0.0,pil_im.size*0.33),(pil_im.size*0.85,pil_im.size*0.25),(pil_im.size*0.15,pil_im.size*0.7)]
cvGetAffineTransform(srctri,dsttri,warp_mat)
cvWarpAffine(im,dst,warp_mat)
cvCopy(dst,im)
center=[(pil_im.size/2,pil_im.size/2)]
angle=-50.0
scale=0.6
cv2DRotationMatrix(center,angle,scale,rot_mat)
cvWarpAffine(im,dst,rot_mat)
cvNamedWindow(“affine”,1)
cvShowImage(“affine”,dst)
наверное не состыковочка в типах переменных.
dartNNN
Апрель 6, 2010 05:57:17
Простите, но при какой компиляции и какие проблемы? Вы сами как думаете при такой постановке вопроса вам на что должны отвечать? Опишите проблему поподробнее и тогда можно будет думать.
S1asH
Апрель 6, 2010 06:02:23
понял причину не запуск программы. возник другой вопрос как сделать так чтоб тип и все значения в кортеже стали типа float?
dartNNN
Апрель 6, 2010 07:11:21
float(number) тебе в помощь. А вообще можно было и книжки посмотреть:) Там обычно про все типы пишут:)
UsCr
Апрель 6, 2010 07:25:02
Ну так а в чем ошибка? Как решил?
S1asH
Апрель 6, 2010 10:23:46
поменял тип переменных внутри кортежа согласно документаци т.е. заменил
srctri=[(0,0),(pil_im.size-1,0),(0,pil_im.size-1
на
srctri=[CvPoint2D32f(0,0),CvPoint2D32f(pil_im.size-1,0),CvPoint2D32f(0,pil_im.size-1)]
теперь ругается:
srctri=[CvPoint2D32f(0,0),CvPoint2D32f(pil_im.size-1,0),CvPoint2D32f(0,pil_im.size-1)]
TypeError: __init__() takes exactly 1 argument (3 given)
dartNNN
Апрель 7, 2010 07:48:14
S1asH
TypeError: __init__() takes exactly 1 argument (3 given)
Это значит, что __init__() принимает только аргумент-указатель на объект (self), т.е. вызывать конструктор класса можно только без аргументов. И путь ваш лежит к документации:) где написано, как работать с этим классом.
ЗЫ. Хотя выглядит это как-то странно, мож я что путаю