我在图像上运行cv :: warpPerspective()函数,以及在源图像中得到结果图像的某些点的位置,这里我走了多远:
int main (){
cv::Point2f srcQuad[4],dstQuad[4];
cv::Mat warpMatrix;
cv::Mat src, dst,src2;
src = cv::imread("card.jpg",1);
srcQuad[0].x = 0; //src Top left
srcQuad[0].y = 0;
srcQuad[1].x = src.cols - 1; //src Top right
srcQuad[1].y = 0;
srcQuad[2].x = 0; //src Bottom left
srcQuad[2].y = src.rows - 1;
srcQuad[3].x = src.cols -1; //src Bot right
srcQuad[3].y = src.rows - 1;
dstQuad[0].x = src.cols*0.05; //dst Top left
dstQuad[0].y = src.rows*0.33;
dstQuad[1].x = src.cols*0.9; //dst Top right
dstQuad[1].y = src.rows*0.25;
dstQuad[2].x = src.cols*0.2; …Run Code Online (Sandbox Code Playgroud) 我正在使用 OpenCV+Python+Numpy 并且我在图像中有三个点,我知道这些点的确切位置。
(P1, P2);
N1
Run Code Online (Sandbox Code Playgroud)
我要将图像转换为另一个视图(例如,我将透视图转换为侧视图)。如果我这样做,我将无法获得图像平面中这三个点的确切位置。我应该以一种可以获得这些点的新坐标的方式编写代码。
pts1=np.float32([[867,652],[1020,580],[1206,666],[1057,757]])
pts2=np.float32([[700,732],[869,754],[906,916],[712,906]])
matrix=cv2.getPerspectiveTransform(pts1,pts2)
result=cv2.warpPerspective(Image1,matrix,(1920,1080))
cv2.imshow('Image',Image1) cv2.imshow('Tran',result)
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何确定这 3 个点的新位置?