我\xe2\x80\x99m 目前正在使用具有鱼眼的相机(虽然不多,但仍然如此),并且我\xe2\x80\x99m 试图使其不失真。
\n作为初学者:我\xe2\x80\x99m对opencv不太熟悉,我\xe2\x80\x99m在尝试做任何事情时总是在文档中。(和/或在这里寻找我的问题的答案)。
\n所以我在网上看到了一些例子,我尝试了解决方案并得到了一些结果。
\n这是我发现的:
\nDIM=(1094, 729)\nK=np.array([\n [1307.2807020496643, 0.0, 530.3754311563506], \n [0.0, 1318.342691460933, 354.98352268131123], \n [0.0, 0.0, 1.0]\n])\nD=np.array([\n [-0.2994762856767568],\n [0.5036082961388784],\n [-4.231072729639434],\n [3.8646397788794578]\n])\ndef undistort(img_path): \n img = cv2.imread(img_path)\n h,w = img.shape[:2]\n print(K)\n print(D)\n print(np.eye(3))\n print(DIM)\n map1, map2 = cv2.fisheye.initUndistortRectifyMap(K, D, np.eye(3), K, DIM, cv2.CV_16SC2)\n \n undistorted_img = cv2.remap(img, map1, map2, interpolation=cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT)\n cv2.imshow("undistorted", undistorted_img)\n cv2.imwrite("test.jpg", undistorted_img)\n cv2.waitKey(0)\n cv2.destroyAllWindows()\n \nif __name__ == \'__main__\':\n for p in sys.argv[1:]:\n undistort(p)\nRun Code Online (Sandbox Code Playgroud)\n这是我用来消除图像失真的 python 脚本。顶部的数据(K 和 D)是通过另一个脚本生成的。我没有\xe2\x80\x99t 提到它,因为我有一个 C++ 翻译,对于相同的基本图片显示相同的结果 …