wk-labs/lab4.ipynb

197 lines
1.5 MiB
Plaintext
Raw Normal View History

2021-11-28 20:35:20 +01:00
{
"cells": [
{
"cell_type": "code",
2021-11-28 23:19:14 +01:00
"execution_count": 17,
2021-11-28 20:35:20 +01:00
"id": "eba0bc77",
"metadata": {},
"outputs": [],
2021-11-28 23:19:14 +01:00
"source": [
"import cv2 as cv\n",
"import numpy as np\n",
"import math\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "0277975c",
"metadata": {},
"outputs": [],
"source": [
"road = cv.imread(\"img/road-lanes.jpg\", cv.IMREAD_COLOR)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "7a47faa3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Image')"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 2880x3600 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(40,50))\n",
"plt.subplot(121)\n",
"plt.imshow(road[:,:,::-1])\n",
"plt.title(\"Image\")"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "ddc3511e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Binary')"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 2880x3600 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"road_gray = cv.cvtColor(park, cv.COLOR_BGR2GRAY)\n",
"\n",
"_, img_bin = cv.threshold(road_gray, 230, 255, cv.THRESH_BINARY)\n",
"\n",
"plt.figure(figsize=(40,50))\n",
"plt.subplot(121)\n",
"plt.imshow(road_gray, cmap='gray')\n",
"plt.title(\"Image\")\n",
"plt.subplot(122)\n",
"plt.imshow(img_bin, cmap='gray')\n",
"plt.title(\"Binary\")"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "6fe434f8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Image')"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 2880x3600 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# lines = cv.HoughLines(img_bin, 1, np.pi / 180, 150, None, 0, 0)\n",
"final = road.copy()\n",
"linesP = cv.HoughLinesP(img_bin, 1, np.pi / 180, 50, None, 30, 10)\n",
"higher_point = final.shape[0]\n",
"lower_point = 350\n",
" \n",
"if linesP is not None:\n",
" for i in range(0, len(linesP)):\n",
" l = linesP[i][0]\n",
"\n",
" a = (l[3] - l[1]) / (l[2] - l[0])\n",
" b = l[3] - ( ((l[3] - l[1]) * l[2]) / (l[2] - l[0]) )\n",
" \n",
" \n",
" higher_x = int((higher_point - b) / a)\n",
" \n",
" lower_x = int((lower_point - b) / a)\n",
" \n",
" cv.line(final, (higher_x, higher_point), (lower_x, lower_point), (0,0,255), 3, cv.LINE_AA)\n",
"\n",
"alpha = 0.5\n",
"result = cv.addWeighted(final, alpha, road, 1 - alpha, 0)\n",
" \n",
"\n",
"plt.figure(figsize=(40,50))\n",
"plt.subplot(121)\n",
"plt.imshow(result[:,:,::-1])\n",
"plt.title(\"Image\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "399d6a41",
"metadata": {},
"outputs": [],
2021-11-28 20:35:20 +01:00
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}