{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tracking a moving ArrowHead of Paenibacilus\n", "\n", "We can use pre defined `OpenCV` algorithms to track a moving ArrowHead of Paenibacilus. The code is siminar to the other example but this one uses OpenCV tracking rather than a costume one." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "ncase=1.3;\n", "size=490;\n", "time=12;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We first **import five modules** we will need into the `Python3` environment" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "import cv2 as cv #, imutils\n", "\n", "import sys\n", "\n", "import matplotlib.pyplot as plt\n", "import matplotlib.patches as patches\n", "import numpy as np\n", "\n", "\n", "# Notice now in the new version of the lib the function has been renamed and moved\n", "# the old line\n", "# from skimage.measure import compare_ssim \n", "# now is\n", "from skimage.metrics import structural_similarity\n", "\n", "#from sklearn.metrics import r2_score \n", "\n", "from glob import glob\n", "\n", "\n", "from scipy.spatial import distance\n", "\n", "\n", "\n", "%from PIL import Image" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "def find_if_close(cnt1,cnt2):\n", " row1,row2 = cnt1.shape[0],cnt2.shape[0]\n", " for i in range(row1):\n", " for j in range(row2):\n", " dist = np.linalg.norm(cnt1[i]-cnt2[j])\n", " if abs(dist) < 50 :\n", " return True\n", " elif i==row1-1 and j==row2-1:\n", " return False" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['./pictures_ArrowHead_moving/image0009.jpg',\n", " './pictures_ArrowHead_moving/image0010.jpg',\n", " './pictures_ArrowHead_moving/image0011.jpg',\n", " './pictures_ArrowHead_moving/image0012.jpg',\n", " './pictures_ArrowHead_moving/image0013.jpg',\n", " './pictures_ArrowHead_moving/image0014.jpg',\n", " './pictures_ArrowHead_moving/image0015.jpg',\n", " './pictures_ArrowHead_moving/image0016.jpg',\n", " './pictures_ArrowHead_moving/image0017.jpg',\n", " './pictures_ArrowHead_moving/image0018.jpg',\n", " './pictures_ArrowHead_moving/image0019.jpg',\n", " './pictures_ArrowHead_moving/image0020.jpg']" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "in_fns = glob(\"./pictures_ArrowHead_moving/*.jpg\") # Names of files\n", "in_fns = sorted(in_fns) # Order them\n", "# Here we store the file names\n", "in_fns" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "scrolled": true }, "outputs": [], "source": [ "#selecting initial point\n", "#import matplotlib.pyplot as plt\n", "#import matplotlib.patches as patches\n", "#from PIL import Image\n", "\n", "k0 = 0\n", "#in_fns = glob(\"./pictures_ArrowHead_moving/*.jpg\") # Names of files\n", "#in_fns = sorted(in_fns) # Order them\n", "#in_fns,ax = plt.subplots(1)\n", "(xi,yi,xf,yf)=(0,0,3280,2464)\n", "\n", "#(xi,yi,xf,yf)=(0,800,1200,1700)\n", "\n", "img0A = cv.imread(in_fns[k0])[yi:yf,xi:xf]\n", "img0B = cv.imread(in_fns[k0+1])[yi:yf,xi:xf]\n", "img0C = cv.imread(in_fns[k0+2])[yi:yf,xi:xf]\n", "img0D = cv.imread(in_fns[k0+3])[yi:yf,xi:xf]\n", "\n", "#img0 = cv2.imread(in_fns[0])[yi:yf,xi:xf]\n", "\n", "#ax.imshow(img0)\n", "#plt.show()\n", "\n", "scale_percent=40\n", "\n", "width = int(img0A.shape[1] * scale_percent / 100)\n", "height = int(img0A.shape[0] * scale_percent / 100)\n", "dim = (width, height)\n", "img00A = cv.GaussianBlur(cv.cvtColor(cv.resize(img0A, dim, interpolation = cv.INTER_AREA), cv.COLOR_BGR2GRAY), (21, 21), 0)\n", "img00B = cv.GaussianBlur(cv.cvtColor(cv.resize(img0B, dim, interpolation = cv.INTER_AREA), cv.COLOR_BGR2GRAY), (21, 21), 0)\n", "img00C = cv.GaussianBlur(cv.cvtColor(cv.resize(img0C, dim, interpolation = cv.INTER_AREA), cv.COLOR_BGR2GRAY), (21, 21), 0)\n", "img00D = cv.GaussianBlur(cv.cvtColor(cv.resize(img0D, dim, interpolation = cv.INTER_AREA), cv.COLOR_BGR2GRAY), (21, 21), 0)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(985, 1312)" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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7NcT7eZ53M1jv55ot8/jbh//9ULX2zwSb3e910gjjTTSSCONNNK3SLvSgzLSSCONNNJII/3lphGgjDTSSCONNNJI1x2NAGWkkUYaaaSRRrruaAQoI4000kgjjTTSdUe7EqB88IMfxB133IHZbIa7774bn/rUp671kK4ZffKTn8SP/MiP4NixYyAi/Mt/+S+zz5kZv/iLv4hjx45hZWUF3/d934cvfelL2Tmbm5v4h//wH+LgwYNYW1vD3/pbfwuPPfZYds7Jkyfxlre8Bevr61hfX8db3vIWnDp1aofvbjmNPJDTyAcjH4w8MPIA8JeMD3iX0Uc+8hFumoZ//dd/nb/85S/zP/pH/4jX1tb4kUceudZDuyb00Y9+lN/97nfzH/7hHzIA/uM//uPs8w984AO8d+9e/sM//EP+whe+wD/xEz/BR48e5TNnzug5b33rW/nmm2/m++67jz/3uc/xX//rf52/4zu+g9u21XN+8Ad/kO+66y6+//77+f777+e77rqL3/SmN12t28xo5IE+jXww8sHIAyMPMP/l4oNdB1Be/epX81vf+tbs2Ete8hL+uZ/7uWs0ouuHSmb03vORI0f4Ax/4gB7b2Njg9fV1/rVf+zVmZj516hQ3TcMf+chH9JzHH3+cnXP8J3/yJ8zM/OUvf5kB8Kc//Wk954EHHmAA/NWvfnWH76pPIw9sTSMfjHww8sDIA8y7nw92VYhnPp/jwQcfxOtf//rs+Otf/3rcf//912hU1y899NBDOH78eDZf0+kUr3vd63S+HnzwQSwWi+ycY8eO4a677tJzHnjgAayvr+Oee+7Rc17zmtdgfX39qs/7yANXTiMfjDTywEjA7uODXQVQnn76aXRdh8OHD2fHDx8+jOPHj1+jUV2/JHOy1XwdP34ck8kEN9xww5bn3HTTTb3r33TTTVd93kceuHIa+WCkkQdGAnYfH+wqgCJERNl7Zu4dGynRc5mv8pyh86/lvI88cOU08sFIIw+MBOwePthVAOXgwYOoqqqH0E6cONFDhCMBR44cAYAt5+vIkSOYz+c4efLkluc8+eSTves/9dRTV33eRx64chr5YKSRB0YCdh8f7CqAMplMcPfdd+O+++7Ljt9333249957r9Gorl+64447cOTIkWy+5vM5PvGJT+h83X333WiaJjvniSeewBe/+EU957WvfS1Onz6Nz372s3rOZz7zGZw+ffqqz/vIA1dOIx+MNPLASMAu5INtS7e9SiRlZb/xG7/BX/7yl/ntb387r62t8cMPP3yth3ZN6OzZs/z5z3+eP//5zzMA/uVf/mX+/Oc/r2V2H/jAB3h9fZ3/6I/+iL/whS/wm9/85sGSsltuuYU/9rGP8ec+9zn+G3/jbwyWlL3yla/kBx54gB944AF+xStecc1LC0ceSDTywcgHIw+MPMD8l4sPdh1AYWb+lV/5Fb799tt5Mpnwq171Kv7EJz5xrYd0zejjH/84A+j9++mf/mlmDmVlv/ALv8BHjhzh6XTK3/u938tf+MIXsmtcvHiR/8E/+Ad84MABXllZ4Te96U386KOPZuc888wz/FM/9VO8d+9e3rt3L//UT/0Unzx58irdZZ9GHshp5IORD0YeGHmA+S8XHxAz8/b5Y0YaaaSRRhpppJG+ddpVOSgjjTTSSCONNNK3B40AZaSRRhpppJFGuu5oBCgjjTTSSCONNNJ1RyNAGWmkkUYaaaSRrjsaAcpII4000kgjjXTd0QhQRhpppJFGGmmk645GgDLSSCONNNJII113NAKUkUYaaaSRRhrpuqMRoIw00kgjjTTSSNcdjQBlpJFGGmmkkUa67mgEKCONNNJII4000nVHI0AZaaSRRhpppJGuO/r/Axdk8AxpbpfNAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Display the images A, B, C , D\n", "figure, axis_array = plt.subplots(1,4)\n", "axis_array[0].imshow(img00A)\n", "axis_array[1].imshow(img00B)\n", "axis_array[2].imshow(img00C)\n", "axis_array[3].imshow(img00D)\n", "img00A.shape" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "# Calculate Structural Similarity between 2 consecutives images\n", "# compare A with B\n", "(score, diff) = structural_similarity(img00A, img00B, full= True)\n", "diff = (diff * 255).astype(\"uint8\")\n", "# compare B with C\n", "(score2, diff2) = structural_similarity(img00B, img00C, full = True)\n", "diff2 = (diff2 * 255).astype(\"uint8\")\n", "# compare C with D\n", "(score3, diff3) = structural_similarity(img00C, img00D, full = True)\n", "diff3 = (diff3 * 255).astype(\"uint8\")" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "# We threshold the image holding the difference between pairs of images \n", "thresh = cv.threshold(diff, 0, 255, # Threshold to clean\n", " cv.THRESH_BINARY_INV | cv.THRESH_OTSU)[1] \n", "thresh2 = cv.threshold(diff2, 0, 255, # Threshold to clean\n", " cv.THRESH_BINARY_INV | cv.THRESH_OTSU)[1] \n", "thresh3 = cv.threshold(diff3, 0, 255, # Threshold to clean\n", " cv.THRESH_BINARY_INV | cv.THRESH_OTSU)[1] " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we **find contours** for **First pair**" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The function above finds 2 contours\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# For example for the Fist pair we have the following contours\n", "img = thresh\n", "contours, hierarchy = cv.findContours(img.copy(),cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)\n", "plt.imshow(cv.drawContours(img, contours, -1, (0,255,0), 3),cmap = 'gray')\n", "LENGTH = len(contours)\n", "print(f\"The function above finds {LENGTH} contours\")" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "contour 0: \t339 \t points\n", "contour 1: \t326 \t points\n" ] } ], "source": [ "# These are;\n", "for i in range (0 , len(contours)):\n", " print(f\"contour {i}: \\t{len(contours[i])} \\t points\")" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "#\n", "status = np.zeros((LENGTH,1))\n", "for i, cnt1 in enumerate(contours):\n", " x = i \n", " if i != LENGTH - 1:\n", " for j, cnt2 in enumerate(contours[i+1:]):\n", " x = x + 1\n", " dist = find_if_close(cnt1, cnt2)\n", " if dist == True:\n", " val = min(status[i],status[x])\n", " status[x] = status[i] = val\n", " else:\n", " if status[x]==status[i]:\n", " status[x] = i + 1" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0]\n", " at 0x7f9ced8930>\n", "(1, 2)\n", "[1]\n", " at 0x7f9ced8930>\n", "(800, 2)\n", "2\n" ] } ], "source": [ "unified = []\n", "maximum = int(status.max()) + 1\n", "for i in range(maximum):\n", " pos = np.where(status==i)[0]\n", " print(pos)\n", " if pos.size != 0:\n", " print(contours[i] for i in pos)\n", " cont = np.vstack(contours[i])# for i in pos) # ULTRA DIRTY!!!!!!!! replace next line \n", " #cont = np.vstack(contours[i] for i in pos)\n", " hull = cv.convexHull(cont)\n", " unified.append(hull)\n", " print(cont.shape)\n", "print(len(unified))" ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [], "source": [ "img=thresh2\n", "contours,hier = cv.findContours(img.copy(),cv2.RETR_EXTERNAL,2)\n", "#plt.imshow(cv2.drawContours(img, contours, -1, (0,255,0), 3),cmap='gray')\n", "LENGTH=len(contours)\n", "status = np.zeros((LENGTH,1))\n", "for i,cnt1 in enumerate(contours):\n", " x = i \n", " if i != LENGTH-1:\n", " for j,cnt2 in enumerate(contours[i+1:]):\n", " x = x+1\n", " dist = find_if_close(cnt1,cnt2)\n", " if dist == True:\n", " val = min(status[i],status[x])\n", " status[x] = status[i] = val\n", " else:\n", " if status[x]==status[i]:\n", " status[x] = i+1" ] }, { "cell_type": "code", "execution_count": 136, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " at 0x7f4a76c790>\n", " at 0x7f5b04b100>\n" ] } ], "source": [ "unified2 = []\n", "maximum = int(status.max())+1\n", "for i in range(maximum):\n", " pos = np.where(status==i)[0]\n", " if pos.size != 0:\n", " print(contours[i] for i in pos)\n", " cont = np.vstack(contours[i])# for i in pos) # ULTRA DIRTY!!!!!!!! replace next line \n", " #cont = np.vstack(contours[i] for i in pos)\n", " hull = cv.convexHull(cont)\n", " unified2.append(hull)" ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [], "source": [ "img=thresh3\n", "contours,hier = cv2.findContours(img.copy(),cv2.RETR_EXTERNAL,2)\n", "#plt.imshow(cv2.drawContours(img, contours, -1, (0,255,0), 3),cmap='gray')\n", "LENGTH=len(contours)\n", "status = np.zeros((LENGTH,1))\n", "for i,cnt1 in enumerate(contours):\n", " x = i \n", " if i != LENGTH-1:\n", " for j,cnt2 in enumerate(contours[i+1:]):\n", " x = x+1\n", " dist = find_if_close(cnt1,cnt2)\n", " if dist == True:\n", " val = min(status[i],status[x])\n", " status[x] = status[i] = val\n", " else:\n", " if status[x]==status[i]:\n", " status[x] = i+1\n", "\n", "unified3 = []\n", "maximum = int(status.max())+1\n", "for i in range(maximum):\n", " pos = np.where(status==i)[0]\n", " if pos.size != 0:\n", " #cont = np.vstack(contours[i] for i in pos)\n", " cont = np.vstack(contours[i])# for i in pos) # ULTRA DIRTY!!!!!!!! replace next line \n", " hull = cv.convexHull(cont)\n", " unified3.append(hull)" ] }, { "cell_type": "code", "execution_count": 138, "metadata": {}, "outputs": [], "source": [ "areamin=20000;\n", "positions0=[];\n", "areas0=[];\n", "ejes0=[];\n", "for i in range(0,len(unified)):\n", " if len(unified[i])>5:\n", " area=np.pi*cv.fitEllipse(unified[i])[1][0]*cv.fitEllipse(unified[i])[1][1]\n", " if area>areamin:\n", " positions0.append(cv.fitEllipse(unified[i])[0])\n", " ejes0.append(cv.fitEllipse(unified[i])[1])\n", " areas0.append(np.pi*cv.fitEllipse(unified[i])[1][0]*cv.fitEllipse(unified[i])[1][1])\n", "positions1=[];\n", "areas1=[];\n", "ejes1=[];\n", "for i in range(0,len(unified2)):\n", " if len(unified2[i])>5:\n", " area=np.pi*cv.fitEllipse(unified2[i])[1][0]*cv.fitEllipse(unified2[i])[1][1]\n", " if area>areamin:\n", " positions1.append(cv.fitEllipse(unified2[i])[0])\n", " ejes1.append(cv.fitEllipse(unified2[i])[1])\n", " areas1.append(np.pi*cv.fitEllipse(unified2[i])[1][0]*cv.fitEllipse(unified2[i])[1][1])\n", "positions2=[];\n", "areas2=[];\n", "ejes2=[];\n", "for i in range(0,len(unified3)):\n", " if len(unified3[i])>5:\n", " area=np.pi*cv.fitEllipse(unified3[i])[1][0]*cv.fitEllipse(unified3[i])[1][1]\n", " if area>areamin:\n", " positions2.append(cv.fitEllipse(unified3[i])[0])\n", " ejes2.append(cv.fitEllipse(unified3[i])[1])\n", " areas2.append(np.pi*cv.fitEllipse(unified3[i])[1][0]*cv.fitEllipse(unified3[i])[1][1])" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 139, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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vvh70M7n8+mOO+6QxWLR+vXr++cF9IG+moPq6mrddtttioqKUkxMjDIyMnTixIl+fCU91xdz4HK59OCDDyo+Pl5RUVG67rrrtHbt2n5+JT13tjloaWnRk08+qauvvlpRUVFKSEjQj370IzU2NgbsYzC/JwYzB4PhPfFciJnzTE1NjQ4cOOBfNm/eLEnKzs6WJP3nP//RLbfcosWLF3e5jzlz5qiyslJr1qzRBx98oGPHjumuu+5Sa2trv7yG3urtHDQ2NqqxsVFLly5VbW2tKioqtHHjRs2cObPfXkNv9cXfg3bPPfeckb/Goy/moLq6WtOmTdPUqVO1fft21dTUqKCg4Ky3RT+f9MUcPPjgg9qzZ482bNig2tpazZgxQ/fff7927drVL6+ht842B8ePH9fOnTv161//Wjt37tS6detUV1enu+++O2Afg/k9MZg5GAzviefkw3nt8ccf940bN87X1tYWsP6rr77ySfLt2rUrYP2RI0d8w4YN861Zs8a/bv/+/b6wsDDfxo0b+2PIfa67c9CZt956yxceHu5raWkJ0ShDq6dz4HA4fElJSb4DBw74JPkqKytDP9gQ6ckc3HTTTb5nnnmmn0YYej2Zg6ioKN9rr70WsG7UqFG+V155JZRDDZmu5qDd9u3bfZJ8X3/9tc/nu7DeE9udOQedMf098Uxm/PPkAuX1evX666/rkUceCfpf1h9//LFaWlo0depU/7qEhARNnDhRH374YaiGGjI9mYPOuN1uRUdHa+hQ834dWU/n4Pjx43rggQf04osvKj4+PoQjDL2ezEFTU5M++ugjjRkzRmlpaYqLi1N6ero++OCDEI82NHr69+C73/2u3nzzTR06dEhtbW1as2aNmpublZGREbrBhkgwc+B2u2WxWBQTEyPpwnxPPHMOutrG1PfEzhAz57H169fryJEjysvLC/pnXC6XwsPDFRsbG7A+Li5OLperj0cYej2ZgzN9++23evbZZzVr1qy+G1g/6ukcPPHEE0pLS9M999wTmoH1o57MwZdffilJmj9/vn7yk59o48aNuu6663T77bdr7969IRpp6PT078Gbb76pU6dOafTo0bJarZo1a5YqKys1bty40Aw0hM41BydPntRTTz2l3Nxc/y9ZvNDeEzubgzOZ/p7YmcGRZIPUihUrdMcddyghIaHX+/L5fEZeN9HbOfB4PJo+fbomTJigefPm9fHo+kdP5mDDhg3aunWrMddFnEtP5qCtrU2SNGvWLD388MOSpMmTJ+u9997Tq6++qrKyspCMNVR6+v/CM888o8OHD2vLli2y2+1av369srOztW3bNl199dUhGm1onG0OWlpalJOTo7a2Nr300kvn3NdgfE8MZg4Gw3tiZ4iZ89TXX3+tLVu2aN26dd36ufj4eHm9Xh0+fDjgXyJNTU1KS0vr62GGVE/noN3Ro0c1bdo0jRgxQpWVlRo2bFgfjzD0ejoHW7du1RdffNHhMPP3v/993XrrrXr//ff7bpAh1tM5GDt2rCRpwoQJAevHjx8vp9PZZ+PrDz2dgy+++EIvvviidu/erauuukqSdM0112jbtm36/e9/r5dffjkUww2Js81BS0uL7rvvPn311VfaunVrwBGJC+U98Wxz0G4wvCd2hdNM56mVK1dqzJgxmj59erd+7vrrr9ewYcP8V7tL0oEDB7R7927j/sft6RxIp//1MXXqVIWHh2vDhg0aPnx4CEYYej2dg6eeekqffPKJHA6Hf5Gk3/3ud1q5cmUIRho6PZ2DlJQUJSQkaM+ePQHr6+rqdMkll/TlEEOup3Nw/PhxSerw7a0hQ4b4j1yZoqs5aP8Q37t3r7Zs2aLRo0cHPH8hvCeeaw6kwfOe2BWOzJyH2tratHLlSj300EMdLs46dOiQnE6n/x4C7W/U8fHxio+Pl81m08yZMzV37lyNHj1ao0aN0i9+8QtdffXV+t73vtfvr6WnejMHR48e1dSpU3X8+HG9/vrr8ng88ng8kqSLLrpIQ4YM6d8X00O9mYP25UwXX3yxLr300tAPvo/0Zg4sFot++ctfat68ebrmmmt07bXXatWqVfrXv/5l1H1WejMHV155pS677DLNmjVLS5cu1ejRo7V+/Xpt3rxZ77zzTr+/lp7qag5OnTqle++9Vzt37tQ777yj1tZW/3Uwo0aNUnh4+KB/TwxmDgbLe+JZDfTXqdDRu+++65Pk27NnT4fnVq5c6ZPUYZk3b55/mxMnTvgKCgp8o0aN8kVERPjuuusun9Pp7MdX0Hu9mYOqqqpOn5fk++qrr/r3hfRCb/8enEkGfjW7L+agrKzMl5SU5IuMjPSlpqb6tm3b1k+j7xu9nYO6ujrfjBkzfGPGjPFFRkb6Jk2a1OGr2ue7ruag/SvpnS1VVVX+7Qbze2IwczBY3hPPxuLz+Xx9VkYAAAD9jGtmAACA0YgZAABgNGIGAAAYjZgBAABGI2YAAIDRiBkAAGA0YgYAABiNmAEAAEYjZgAAgNGIGQAAYDRiBgAAGI2YAQAARvt/GeKpod2srNQAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(np.transpose(positions0)[0],-np.transpose(positions0)[1],'bo')\n", "plt.plot(np.transpose(positions1)[0],-np.transpose(positions1)[1],'ro')\n", "plt.plot(np.transpose(positions2)[0],-np.transpose(positions2)[1],'go')" ] }, { "cell_type": "code", "execution_count": 140, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 140, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dmin=20;\n", "clst0=[];\n", "for i in range(0,len(positions0)):\n", " distmin0=ejes0[i][1]/2;\n", " for j in range(0,len(positions1)):\n", " distmin1=ejes1[j][1]/2;\n", " dist=distance.euclidean(positions0[i],positions1[j])\n", " if dmin0.9:\n", " j.append(i);\n", "clst=[];\n", "size=[];\n", "for i in range(0,len(j)):\n", " clst.append(clst1[j[i]])\n", " size.append(size1[j[i]])\n", "#initial points DDD:\n", "heads=[i[0] for i in clst]\n", "heads" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [ { "ename": "IndexError", "evalue": "list index out of range", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn [135], line 4\u001b[0m\n\u001b[1;32m 2\u001b[0m nhead\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m;\n\u001b[1;32m 3\u001b[0m fig,ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39msubplots(\u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m----> 4\u001b[0m h,w\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[43msize\u001b[49m\u001b[43m[\u001b[49m\u001b[43mnhead\u001b[49m\u001b[43m]\u001b[49m,\u001b[38;5;241m1\u001b[39m\u001b[38;5;241m*\u001b[39msize[nhead]\n\u001b[1;32m 5\u001b[0m xmin\u001b[38;5;241m=\u001b[39mheads[nhead][\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m-\u001b[39m(w\u001b[38;5;241m/\u001b[39m\u001b[38;5;241m2\u001b[39m)\n\u001b[1;32m 6\u001b[0m ymin\u001b[38;5;241m=\u001b[39mheads[nhead][\u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m-\u001b[39m(h\u001b[38;5;241m/\u001b[39m\u001b[38;5;241m4\u001b[39m)\n", "\u001b[0;31mIndexError\u001b[0m: list index out of range" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#now we start with a the nhead head\n", "nhead=0;\n", "fig,ax = plt.subplots(1)\n", "h,w=1*size[nhead],1*size[nhead]\n", "xmin=heads[nhead][0]-(w/2)\n", "ymin=heads[nhead][1]-(h/4)\n", "rect = patches.Rectangle((xmin,ymin),w,h,linewidth=1,edgecolor='r',facecolor='none')\n", "# Add the patch to the Axes\n", "ax.imshow(img00A,cmap='gray')\n", "ax.add_patch(rect)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "in_fns = glob(\"./pictures/*.jpg\") # Names of files\n", "in_fns = sorted(in_fns) # Order them\n", "imgAll=[];\n", "img0 = cv2.imread(in_fns[0])[yi:yf,xi:xf]\n", "scale_percent=40\n", "width = int(img0.shape[1] * scale_percent / 100)\n", "height = int(img0.shape[0] * scale_percent / 100)\n", "dim = (width, height)\n", "img00 = cv2.resize(img0, dim, interpolation = cv2.INTER_AREA)\n", "imgAll.append(img00)\n", "for i in range(1,len(in_fns)):\n", " img0 = cv2.imread(in_fns[i])[yi:yf,xi:xf]\n", " img00 = cv2.resize(img0, dim, interpolation = cv2.INTER_AREA)\n", " imgAll.append(img00)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 (560, 25) (826, 291)\n", "1 (599, 106) (813, 320)\n", "2 (659, 213) (838, 392)\n", "3 (620, 256) (834, 470)\n", "4 (683, 386) (832, 534)\n", "5 (695, 427) (873, 606)\n", "6 (743, 534) (891, 683)\n", "7 (817, 594) (941, 718)\n", "8 (825, 691) (928, 794)\n", "9 (860, 764) (963, 868)\n", "10 (887, 835) (990, 939)\n", "11 (232, 555) (292, 615)\n" ] } ], "source": [ "if __name__ == '__main__' :\n", " \n", " tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE', 'CSRT']\n", " tracker_type = tracker_types[3]\n", " \n", " if tracker_type == 'BOOSTING':\n", " tracker = cv2.TrackerBoosting_create()\n", " if tracker_type == 'MIL':\n", " tracker = cv2.TrackerMIL_create()\n", " if tracker_type == 'KCF':\n", " tracker = cv2.TrackerKCF_create()\n", " if tracker_type == 'TLD':\n", " tracker = cv2.TrackerTLD_create()\n", " if tracker_type == 'MEDIANFLOW':\n", " tracker = cv2.TrackerMedianFlow_create()\n", " if tracker_type == 'GOTURN':\n", " tracker = cv2.TrackerGOTURN_create()\n", " if tracker_type == 'MOSSE':\n", " tracker = cv2.TrackerMOSSE_create()\n", " if tracker_type == \"CSRT\":\n", " tracker = cv2.TrackerCSRT_create()\n", " \n", " height , width , layers = imgAll[0].shape\n", " Data = np.zeros([len(imgAll),2])\n", " video = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 20, (width, height))\n", "\n", " \n", " img = cv2.cvtColor(imgAll[0], cv2.COLOR_BGR2GRAY)\n", " frame = cv2.GaussianBlur(img, (21, 21), 0)\n", " bbox = (xmin, ymin, w, h)\n", " #bbox = cv2.selectROI(frame, False)\n", " \n", " # Initialize tracker with first frame and bounding box\n", " ok = tracker.init(frame, bbox)\n", " Data[0]=bbox[0]+bbox[2]/2,bbox[1]+bbox[3]/2\n", " p1 = (int(bbox[0]), int(bbox[1]))\n", " p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3]))\n", " cv2.rectangle(imgAll[0], p1, p2, (0,255,0), 2, 1)\n", " print(0,p1,p2) \n", " video.write(imgAll[0])\n", " \n", " for m in range(1,len(imgAll)):\n", " img = cv2.cvtColor(imgAll[m], cv2.COLOR_BGR2GRAY)\n", " frame = cv2.GaussianBlur(img, (21, 21), 0)\n", " ok, bbox = tracker.update(frame)\n", " if ok:\n", " # Tracking success\n", " p1 = (int(bbox[0]), int(bbox[1]))\n", " p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3]))\n", " #cv2.rectangle(frame, p1, p2, (255,0,0), 2, 1)\n", " else :\n", " #Tracking failure\n", " print('Tracking failure detected')\n", " np.savez('data', Data)\n", " video.release()\n", " sys.exit()\n", " #assign final value\n", " Data[m] = np.array([(p1[0]+p2[0])/2,(p1[1]+p2[1])/2])\n", " cv2.rectangle(imgAll[m], p1, p2, (0,255,0), 2, 1)\n", " print(m,p1,p2) \n", " video.write(imgAll[m])\n", "\n", " np.savez('data', Data)\n", " video.release()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Data2=Data[0:11]\n", "plt.title('Tracking')\n", "plt.xlabel('x')\n", "plt.ylabel('y')\n", "plt.plot(np.transpose(Data2)[0],-np.transpose(Data2)[1],'o')" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "(74.11915546887121, 12.237347939324959)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vel=[]\n", "scale=1400\n", "for i in range(1,len(Data2)-1):\n", " dist=distance.euclidean((Data2[i][0],Data2[i][1]),(Data2[i+1][0],Data2[i+1][1]))\n", " dist2=dist*(100000/(2*scale*scale_percent))\n", " vel.append(dist2)\n", "plt.ylim(0, 1000)\n", "plt.plot(vel)\n", "plt.title('Velocity vs. time')\n", "plt.xlabel('time (min)')\n", "plt.ylabel('v (µm/min)')\n", "plt.show()\n", "np.mean(vel),np.std(vel)" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'Data2' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn [124], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m#ncase,nData,Size,Time,meanV,meanStd\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m data\u001b[38;5;241m=\u001b[39m[ncase,\u001b[38;5;28mlen\u001b[39m(\u001b[43mData2\u001b[49m),size,time,np\u001b[38;5;241m.\u001b[39mmean(vel),np\u001b[38;5;241m.\u001b[39mstd(vel)]\n\u001b[1;32m 3\u001b[0m np\u001b[38;5;241m.\u001b[39msavetxt(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdata\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;28mstr\u001b[39m(ncase)\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.dat\u001b[39m\u001b[38;5;124m'\u001b[39m, data)\n", "\u001b[0;31mNameError\u001b[0m: name 'Data2' is not defined" ] } ], "source": [ "#ncase,nData,Size,Time,meanV,meanStd\n", "data=[ncase,len(Data2),size,time,np.mean(vel),np.std(vel)]\n", "np.savetxt('data'+str(ncase)+'.dat', data)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.2" } }, "nbformat": 4, "nbformat_minor": 4 }