Избран магазин
Наличност 1 бройки
Skroutz Защита на купувачите
Задайте местоположението за доставка, за да видите продуктите според вашето избиране.
© 20[0-9]{2} Skroutz SA Всички отдясно и отляво са запазени. FAQ | Terms of use | Privacy Policy | Cookie Policy
Основни характеристики:
Избран магазин
Наличност 1 бройки
Skroutz Защита на купувачите
Цените се изчисляват за:Люксембург, Други възможности за плащане
Спецификациите са събрани от официални уебсайтове на производителите. Моля, проверете спецификациите преди да продължите с окончателната си покупка. Ако забележите някакъв проблем, можете да докладвайте го тук.
Ако искате да си закупите килим, който струва парите, вземете този. Той е красив, огромен, попиващ и мек. И не се движи нито милиметър.
ДАЛЕЧЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕНИЕ: Както се извлича информация от документи, така и от изображения. Например, если вам нужно узнать, какие пиксели в изображении являются границей, вы можете использовать следующий код:
```python
import cv2
import numpy as np
image = cv2.imread('image.jpg')
edges = cv2.Canny(image, 100, 200)
```
В этом примере мы используем функцию `Canny` из библиотеки OpenCV для обнаружения границ. Первый аргумент - это изображение, которое мы хотим обработать, а второй и третий аргументы - это пороги, которые мы хотим использовать для обнаружения границ. Все пиксели с интенсивностью ниже 100 будут считаться неполезными, а все пиксели с интенсивностью выше 200 будут считаться границами. Пороги могут быть изменены в зависимости от изображения.
После того, как мы обнаружили границы, мы можем использовать функцию `findContours` для поиска контуров. Эта функция возвращает список контуров, каждый из которых представляет собой список точек (x, y) на изображении, образующих контур.
```python
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
```
Первый аргумент - это изображение, на котором мы ищем контуры. Второй аргумент - это метод аппроксимации контуров. В нашем случае мы используем `cv2.RETR_EXTERNAL`, чтобы получить только внешние контуры. Третий аргумент - это метод аппроксимации контуров. В нашем случае мы используем `cv2.CHAIN_APPROX_SIMPLE`, чтобы сжать горизонтальные, вертикальные и диагональные сегменты и оставить только их конечные точки.
В результате мы получаем список контуров, каждый из которых представляет собой массив точек (x, y). В нашем случае каждый контур представляет собой прямоугольник, поэтому он состоит из 4 точек.
Мы можем отрисовать все контуры на изображении, используя функцию `cv2.drawContours`:
```python
cv2.drawContours(image, contours, -1, (0, 255, 0), 3)
```
Первый аргумент - это изображение, на котором мы рисуем контуры. Второй аргумент - это список контуров. Третий аргумент - это индекс контура, который мы хотим нарисовать. Если передать `-1`, то будут нарисованы все контуры. Четвертый аргумент - это цвет контура. Пятый аргумент - это толщина линии контура.
Вот полный код:
```python
import cv2
import numpy as np
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(image, contours, -1, (0, 255, 0), 3)
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
В результате мы получим следующее изображение:
![contours](https://user-images.githubusercontent.com/54672403/119232716-4a8e4c80-bb2e-11eb-9b9d-4b7d6e6f3c6d.png)
### 2. Поиск контуров на изображении
```python
import cv2
import numpy as np
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
В результате мы получим следующее изображение:
![bounding_rect](https://user-images.githubusercontent.com/54672403/119232717-4c581000-bb2e-11eb-9c3f-6e0b4f5d3d7a.png)
### 3. Поиск контуров на изображении с использованием аппроксимации
```python
import cv2
import numpy as np
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
epsilon = 0.01 * cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, epsilon, True)
cv2.drawContours(image, [approx], -1, (0, 255, 0), 2)
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
В результате мы получим следующее изображение:
![approx_poly](https://user-images.githubusercontent.com/54672403/119232719-4d893d00-bb2e-11eb-9a8b-5e9c9b6b7b5e.png)
### 4. Поиск контуров на изображении с использованием аппроксимации и фильтрации
```python
import cv2
import numpy as np
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
epsilon = 0.01 * cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, epsilon, True)
if len(approx) == 4:
cv2.drawContours(image, [approx], -1, (0, 255, 0), 2)
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
В результате мы получим следующее изображение:
![approx_poly_filtered](https://user-images.githubusercontent.com/54672403/119232720-4e21d380-bb2e-11eb-8d6c-4e3a3e8a3b7b.png)
### 5. Поиск контуров на изображении с использованием аппроксимации, фильтрации и сортировки
```python
import cv2
import numpy as np
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
epsilon = 0.01 * cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, epsilon, True)
if len(approx) == 4:
x, y, w, h = cv2.boundingRect(approx)
if w > 100 and h > 100:
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
В результате мы получим следующее изображение:
![approx_poly_filtered_bounded](https://user-images.githubusercontent.com/54672403/119232721-4e21d380-bb2e-11eb-8f0b-1e5e4d7c7e7b.png)
### 6. Поиск контуров на изображении с использованием аппроксимации, фильтрации, сортировки и перспективы
```python
import cv2
import numpy as np
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
epsilon = 0.01 * cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, epsilon, True)
if len(approx) == 4:
x, y, w, h = cv2.boundingRect(approx)
if w > 100 and h > 100:
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(image, 'Rectangle', (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
В результате мы получим следующее изображение:
![approx_poly_filtered_bounded_text](https://user-images.githubusercontent.com/54672403/119232722-4e21d380-bb2e-11eb-8e4f-2e2a0b7e7b3f.png)
## Заключение
В этом уроке мы рассмотрели, как использовать фильтрацию и аппроксимацию для обнаружения контуров на изображении. Мы использовали функцию `Canny` для обнаружения границ, функцию `findContours` для поиска контуров, функцию `approxPolyDP` для аппроксимации контуров и функцию `drawContours` для отрисовки контуров на изображении. Мы также рассмотрели, как можно использовать фильтрацию и аппроксимацию для нахождения прямоугольников на изображении
ДРЪЖТЕ СЕ ДАЛЕЧ, АКО ИСКАТЕ ДА ПРОЦЪФТЯВАТЕ!
Който купува това, залага на сериозна травма, да не говорим за повече, този, който го е направил, е просто убиец, а този, който го продава като нехлъзгащ се, вероятно няма представа колко опасно е.
Хубаво усещане, понякога се плъзга, ако излезете от ваната-душ и не се изсушите напълно, оставяйки много вода да достигне до подложката.
3-те звезди са, защото се хлъзга, ако падне близо до вода или ако оттичането е точно под него, като мен и се появяват сапунени мехурчета с банята! В противен случай, е красиво, бързо се изсушава и добре абсорбира, но се хлъзга!
Потвърдена покупка
приятна текстура
Потвърдена покупка
Тя не се изсушава лесно.
Потвърдена покупка
Когато вали, долната част се плъзга.
Потвърдена покупка
Много добро качество и добре изработено в строителството
Потвърдена покупка
Удивителна текстура. Много добро качество
Потвърдена покупка
Фантастичен килим. Софистициран външен вид, мек и добре се задържа на пода.
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка