相关疑难解决方法(0)

在点上运行cv :: warpPerspective

我在图像上运行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 visual-c++

5
推荐指数
2
解决办法
4753
查看次数

如何确定透视变换后点在新图像平面中的位置?

我正在使用 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 个点的新位置?

python opencv transform image-processing perspectivecamera

3
推荐指数
1
解决办法
3843
查看次数