trap/test_homography.ipynb

352 lines
5.6 MiB
Plaintext
Raw Normal View History

2023-12-06 10:21:43 +01:00
{
"cells": [
{
"cell_type": "code",
2024-01-23 15:54:09 +01:00
"execution_count": 2,
2023-12-06 10:21:43 +01:00
"metadata": {},
"outputs": [],
"source": [
"import cv2\n",
"import numpy as np\n",
"from PIL import Image\n",
2024-01-23 15:54:09 +01:00
"import matplotlib.pyplot as plt\n",
"from pathlib import Path"
2023-12-06 10:21:43 +01:00
]
},
{
"cell_type": "code",
2024-01-23 15:54:09 +01:00
"execution_count": 3,
2023-12-06 10:21:43 +01:00
"metadata": {},
"outputs": [],
"source": [
2024-01-23 15:54:09 +01:00
"img_src = \"../DATASETS/hof/webcam20231103-2.png\""
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"img_path = Path(img_src)\n",
"output_path = img_path.with_stem(img_path.stem + '-homography').with_suffix('.txt')\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Setup"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"from os import PathLike\n",
"\n",
"def render_projection(src, dst, img: PathLike, points = []):\n",
2023-12-06 10:21:43 +01:00
" x_min = min(dst[:,0])\n",
" if x_min < 0:\n",
" dst[:,0] += x_min * -1\n",
" y_min = min(dst[:,1])\n",
" if y_min < 0:\n",
" dst[:,1] += y_min * -1\n",
"\n",
" dst[:,0] += 1500\n",
" dst[:,1] += 600\n",
"\n",
"\n",
" # print(\"from\", src)\n",
" # print(\"to\", dst)\n",
"\n",
" H, status = cv2.findHomography(src,dst)\n",
" f, axes = plt.subplots(1, 2, figsize=(16,8))\n",
"\n",
2024-01-23 15:54:09 +01:00
" img = cv2.imread(str(img))\n",
2023-12-06 10:21:43 +01:00
" img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n",
"\n",
" for i, p in enumerate(src):\n",
" cv2.circle(img, p, 3, (0,255,0), 0)\n",
" cv2.putText(img, str(i), p, cv2.FONT_HERSHEY_COMPLEX, .5, (0,255,0))\n",
"\n",
" # print (H)\n",
" dst = cv2.warpPerspective(img,H,(2500,1920))\n",
" axes[0].imshow(img)\n",
" axes[1].imshow(dst)\n",
2024-01-23 15:54:09 +01:00
"\n",
" def onclick(event):\n",
" points.append([event.xdata,event.ydata])\n",
" f.canvas.mpl_connect('button_press_event', onclick)\n",
"\n",
2023-12-06 10:21:43 +01:00
" plt.tight_layout()\n",
" plt.show()\n",
" # display(Image.fromarray(img).resize((600,600)), Image.fromarray(dst).resize((600,600)))\n",
" return H"
]
},
{
2024-01-23 15:54:09 +01:00
"cell_type": "markdown",
2023-12-06 10:21:43 +01:00
"metadata": {},
"source": [
2024-01-23 15:54:09 +01:00
"# First recording"
2023-12-06 10:21:43 +01:00
]
},
{
"cell_type": "code",
2024-01-23 15:54:09 +01:00
"execution_count": 6,
2023-12-06 10:21:43 +01:00
"metadata": {},
"outputs": [
{
"data": {
2024-01-23 15:54:09 +01:00
"image/png": "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
2023-12-06 10:21:43 +01:00
"text/plain": [
"<Figure size 1600x800 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
2024-01-23 15:54:09 +01:00
"array([[ 1.71375783e+00, 2.33423256e+00, -2.69179279e+02],\n",
" [-4.74127516e-01, 5.72635471e+00, 3.04878642e+02],\n",
" [-2.89572527e-04, 1.97232411e-03, 1.00000000e+00]])"
2023-12-06 10:21:43 +01:00
]
},
2024-01-23 15:54:09 +01:00
"execution_count": 6,
2023-12-06 10:21:43 +01:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"src = np.array([[924, 341],\n",
" [988, 343],\n",
" [908,125],\n",
" [941, 404],])\n",
"\n",
2024-01-23 15:54:09 +01:00
"dst = np.array([[2,0],\n",
2023-12-06 10:21:43 +01:00
"[100,0],\n",
2024-01-23 15:54:09 +01:00
"[105, -695],\n",
2023-12-06 10:21:43 +01:00
"[0, 130]])\n",
"\n",
"\n",
2024-01-23 15:54:09 +01:00
"render_projection(src, dst, img_path)\n",
2023-12-06 10:21:43 +01:00
"# cv2.imwrite(\"/tmp/test.jpg\", dst)"
]
},
{
"cell_type": "code",
2024-01-23 15:54:09 +01:00
"execution_count": 7,
2023-12-06 10:21:43 +01:00
"metadata": {},
"outputs": [
{
"data": {
2024-01-23 15:54:09 +01:00
"image/png": "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
2023-12-06 10:21:43 +01:00
"text/plain": [
"<Figure size 1600x800 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
2024-01-23 15:54:09 +01:00
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 2.21499129e+00 2.34352815e+00 8.78577725e+01]\n",
" [-5.43898062e-02 4.67568137e+00 9.00976942e+01]\n",
" [-4.62400661e-05 1.56718752e-03 1.00000000e+00]]\n"
]
2023-12-06 10:21:43 +01:00
}
],
"source": [
"\n",
"src = np.array([[924, 341],\n",
" [988, 343],\n",
2024-01-23 15:54:09 +01:00
" [810, 330],\n",
" [620, 325],\n",
" [908,143],\n",
" [1072,616],\n",
" [941, 404],\n",
" \n",
" ])\n",
2023-12-06 10:21:43 +01:00
"\n",
"dst = np.array([[0,0],\n",
2024-01-23 15:54:09 +01:00
"[97,0],\n",
"[-160,-33],\n",
"[-460,-33],\n",
"[105, -500],\n",
"[87, 420],\n",
"[-2, 112]\n",
"])\n",
2023-12-06 10:21:43 +01:00
"\n",
"\n",
2024-01-23 15:54:09 +01:00
"H = render_projection(src, dst, img_path)\n",
"print(H)\n",
"# np.savetxt(output_path, H, delimiter=\",\")\n",
"# cv2.imwrite(\"/tmp/test.jpg\", dst)"
2023-12-06 10:21:43 +01:00
]
},
{
"cell_type": "code",
2024-01-23 15:54:09 +01:00
"execution_count": 8,
2023-12-06 10:21:43 +01:00
"metadata": {},
"outputs": [
{
"data": {
2024-01-23 15:54:09 +01:00
"image/png": "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
2023-12-06 10:21:43 +01:00
"text/plain": [
"<Figure size 1600x800 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
2024-01-23 15:54:09 +01:00
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 2.21499129e+00 2.34352815e+00 8.78577725e+01]\n",
" [-5.43898062e-02 4.67568137e+00 9.00976942e+01]\n",
" [-4.62400661e-05 1.56718752e-03 1.00000000e+00]]\n"
]
2023-12-06 10:21:43 +01:00
}
],
"source": [
"\n",
"src = np.array([[924, 341],\n",
" [988, 343],\n",
2024-01-23 15:54:09 +01:00
" [810, 330],\n",
" [620, 325],\n",
" [908,143],\n",
" [1072,616],\n",
" [941, 404],\n",
" \n",
" ])\n",
2023-12-06 10:21:43 +01:00
"\n",
2024-01-23 15:54:09 +01:00
"dst = np.array([[0,0],\n",
"[97,0],\n",
"[-160,-33],\n",
"[-460,-33],\n",
"[105, -500],\n",
"[87, 420],\n",
"[-2, 112]\n",
"])\n",
2023-12-06 10:21:43 +01:00
"\n",
"\n",
2024-01-23 15:54:09 +01:00
"H = render_projection(src, dst, img_path)\n",
"print(H)\n",
"# np.savetxt(output_path, H, delimiter=\",\")\n",
2023-12-06 10:21:43 +01:00
"# cv2.imwrite(\"/tmp/test.jpg\", dst)"
]
},
{
2024-01-23 15:54:09 +01:00
"cell_type": "markdown",
2023-12-06 10:21:43 +01:00
"metadata": {},
"source": [
2024-01-23 15:54:09 +01:00
"# second recording"
2023-12-06 10:21:43 +01:00
]
},
{
"cell_type": "code",
2024-01-23 15:54:09 +01:00
"execution_count": 9,
2023-12-06 10:21:43 +01:00
"metadata": {},
"outputs": [],
"source": [
2024-01-23 15:54:09 +01:00
"img_src = \"../DATASETS/hof/webcam20240110.png\"\n",
"img_path = Path(img_src)\n",
"output_path = img_path.with_stem(img_path.stem + '-homography').with_suffix('.txt')"
2023-12-06 10:21:43 +01:00
]
},
{
"cell_type": "code",
2024-01-23 15:54:09 +01:00
"execution_count": 10,
2023-12-06 10:21:43 +01:00
"metadata": {},
"outputs": [
{
"data": {
2024-01-23 15:54:09 +01:00
"image/png": "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
2023-12-06 10:21:43 +01:00
"text/plain": [
"<Figure size 1600x800 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
2024-01-23 15:54:09 +01:00
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 1.99303684e+00 2.07856843e+00 1.70031558e+02]\n",
" [ 1.80069779e-02 4.28293697e+00 1.19720304e+02]\n",
" [-7.86892465e-05 1.44778561e-03 1.00000000e+00]]\n"
]
2023-12-06 10:21:43 +01:00
}
],
"source": [
"\n",
2024-01-23 15:54:09 +01:00
"src = np.array([\n",
" [954, 326], # 0\n",
" [1010, 320], # 1\n",
" [840, 325], # 2\n",
" [645, 317], # 3\n",
" [930,123], # 4\n",
" [1115,598], # 5\n",
" [970, 390], # 6\n",
2023-12-06 10:21:43 +01:00
" ])\n",
"\n",
"dst = np.array([[0,0],\n",
"[97,0],\n",
"[-160,-33],\n",
"[-460,-33],\n",
"[105, -500],\n",
"[87, 420],\n",
"[-2, 112]\n",
"])\n",
"\n",
2024-01-23 15:54:09 +01:00
"points=[]\n",
"H = render_projection(src, dst, img_path, points)\n",
"print(H)\n",
"# print(output_path)\n",
"np.savetxt(output_path, H, delimiter=\",\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Compare\n",
2023-12-06 10:21:43 +01:00
"\n",
2024-01-23 15:54:09 +01:00
"Compare the different input images and homeographies."
2023-12-06 10:21:43 +01:00
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}