widzenie-komputerowe-MP/1_zad_odp.ipynb

177 lines
228 KiB
Plaintext
Raw Permalink Normal View History

2022-10-16 21:00:59 +02:00
{
"cells": [
{
"cell_type": "markdown",
"id": "08a9cccb-e107-4062-80a5-5cd53bf609e7",
"metadata": {},
"source": [
"## Ćwiczenie 1\n",
"\n",
"Wczytaj plik [`img/soyjaks.jpg`](https://knowyourmeme.com/memes/two-soyjaks-pointing) i spróbuj odtworzyć poniższy obrazek."
]
},
{
"cell_type": "markdown",
"id": "8f2c7557-6200-4d7a-8276-82f40aa08eba",
"metadata": {},
"source": [
"![Two Soyjaks Pointing](img/soyjaks-final.png)"
]
},
{
"cell_type": "code",
"execution_count": 399,
"id": "fe514d4d",
"metadata": {},
"outputs": [],
"source": [
"import cv2 as cv\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
2023-01-04 14:09:18 +01:00
"execution_count": 404,
2022-10-16 21:00:59 +02:00
"id": "ae6c6ab1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2023-01-04 14:09:18 +01:00
"<matplotlib.image.AxesImage at 0x7faec30831c0>"
2022-10-16 21:00:59 +02:00
]
},
2023-01-04 14:09:18 +01:00
"execution_count": 404,
2022-10-16 21:00:59 +02:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2023-01-04 14:09:18 +01:00
"image/png": "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
2022-10-16 21:00:59 +02:00
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"image = cv.imread(\"img/soyjaks.jpg\", cv.IMREAD_COLOR)\n",
"\n",
"image = cv.cvtColor(image, cv.COLOR_BGR2RGB)\n",
"image = image[0:520, 45:490]\n",
"cv.circle(image, (276, 226), 50, (205, 100, 229), 8)\n",
"\n",
2023-01-04 14:09:18 +01:00
"cv.putText(image, 'OMG not chikenz!', (10, 100), cv.FONT_HERSHEY_SIMPLEX , 3, (255,0,0), 5)\n",
2022-10-16 21:00:59 +02:00
"plt.imshow(image)"
]
},
{
"cell_type": "markdown",
"id": "209ce6e2",
"metadata": {},
"source": [
"## Ćwiczenie 2\n",
"\n",
"Załaduj obrazy `img/pipe.png` oraz `img/man-without-pipe.png` i wykonaj operacje tak, aby uzyskać poniższy obraz.\n"
]
},
{
"cell_type": "markdown",
"id": "f9c71d3f",
"metadata": {},
"source": [
"![Człowiek z fajką](img/man-with-pipe.png)"
]
},
{
"cell_type": "code",
"execution_count": 401,
"id": "745da0ae",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7faec31ce1f0>"
]
},
"execution_count": 401,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"\n",
"pipe = cv.imread(\"img/pipe.png\", cv.IMREAD_UNCHANGED)\n",
"pipe = cv.cvtColor(pipe, cv.COLOR_BGRA2RGBA)\n",
"\n",
"pipe = cv.resize(pipe, None, fx=0.55, fy=0.55)\n",
"pipe = cv.flip(pipe, 1)\n",
"\n",
"man = cv.imread(\"img/man-without-pipe.png\", cv.IMREAD_UNCHANGED)\n",
"\n",
"man = cv.cvtColor(man, cv.COLOR_BGR2RGB)\n",
"\n",
"alpha_s = pipe[:, :, 3] / 255.0\n",
"\n",
"x_offset=70\n",
"y_offset=280\n",
"y1, y2 = y_offset, y_offset + pipe.shape[0]\n",
"x1, x2 = x_offset, x_offset + pipe.shape[1]\n",
"\n",
"alpha_s = pipe[:, :, 3] / 255.0\n",
"alpha_l = 1.0 - alpha_s\n",
"\n",
"for c in range(0, 3):\n",
" man[y1:y2, x1:x2, c] = (alpha_s * pipe[:, :, c] +\n",
" alpha_l * man[y1:y2, x1:x2, c])\n",
"plt.imshow(man)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.8.12 64-bit",
"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.12"
},
"vscode": {
"interpreter": {
"hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}