Я хочу обрезать изображения, которые были определены граничными линиями, нарисованными cv2. Текущий сценарий может точно определять и рисовать границы изображения, но я обнаружил, что трудно обрезать области изображения, определенные в граничных линиях. Следующий скрипт выберет два верхних крупнейших контура. Может ли кто-нибудь помочь мне отредактировать так, чтобы после выбора двух верхних самых больших контуров изображения внутри контровых обрезались?
import cv2
import numpy as np
import matplotlib.pyplot as plt
image_path = r'C:\Users\bear\Good\230903134657_HNN3TDMXY_1_Delam Analysis.jpg'
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
def count_contours(image,th):
_, binary_image = cv2.threshold(image, th, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(binary_image, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
contour_areas = [(cv2.contourArea(contour), contour) for contour in contours]
contour_areas.sort(key=lambda x: x[0], reverse=True) # Sort by area, largest first
total_contours_count = len(contour_areas)
print(total_contours_count)
return total_contours_count
def draw_contours(image,th):
_, binary_image = cv2.threshold(image, th, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(binary_image, cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
contour_areas = [(cv2.contourArea(contour), contour) for contour in contours]
contour_areas.sort(key=lambda x: x[0], reverse=True) # Sort by area, largest first
total_contours_count = len(contour_areas)
top_contours = [contour for _, contour in contour_areas[:2]]
contour_image = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)
cv2.drawContours(contour_image, top_contours, -1, (0, 255, 0), 2)
cv2.imwrite('drawcountourtest.png', contour_image)
plt.imshow(cv2.cvtColor(contour_image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()
test_count = count_contours(image,130)
if test_count > 300:
print(test_count)
draw_contours(image,200)
else:
print(test_count)
draw_contours(image,130)
Подробнее здесь: https://stackoverflow.com/questions/789 ... ary-by-cv2
Как обрезать изображения внутри нарисованной границы с помощью cv2? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Обрезать изображение с помощью реакции - настроить стиль реагирования-легко-обрезать
Anonymous » » в форуме CSS - 0 Ответы
- 44 Просмотры
-
Последнее сообщение Anonymous
-