Избран магазин
Наличност 8 броя
Задайте местоположението за доставка, за да видите продуктите според вашето избиране.
Основни характеристики:
Избран магазин
Наличност 8 броя
Кърпи за баня
Кърпи за баня
Кърпи за баня
Кърпи за баня
Бански килими
Бански килими
Бански килими
Бански килими
Цените се изчисляват за:Люксембург, Други възможности за плащане
Спецификациите са събрани от официални уебсайтове на производителите. Моля, проверете спецификациите преди да продължите с окончателната си покупка. Ако забележите някакъв проблем, можете да докладвайте го тук.
Ако искате да си закупите килим, който струва парите, вземете този. Той е красив, огромен, попиващ и мек. И не се движи нито милиметър.
ДАЛЕЧЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕНИЕ: Както се извлича информация от документи, така и от изображения. Например, если вам нужно узнать, какие пиксели в изображении являются границей, вы можете использовать следующий код:
```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-те звезди са, защото се хлъзга, ако падне близо до вода или ако оттичането е точно под него, като мен и се появяват сапунени мехурчета с банята! В противен случай, е красиво, бързо се изсушава и добре абсорбира, но се хлъзга!
Потвърдена покупка
приятна текстура
Потвърдена покупка
Тя не се изсушава лесно.
Потвърдена покупка
Когато вали, долната част се плъзга.
Потвърдена покупка
Много добро качество и добре изработено в строителството
Потвърдена покупка
Удивителна текстура. Много добро качество
Потвърдена покупка
Фантастичен килим. Софистициран външен вид, мек и добре се задържа на пода.
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка
Потвърдена покупка