Я пишу сценарий, который загружает изображение, и мы можем нарисовать на него Bboxes, нажав клавишу B, а затем перетаскивая мышь.
Однако по какой -то причине расчет координат Bboxes (особенно в координате Y) идет неправильно. < /p>
мне удалось получить минимальный воспроизводимый код. Вот это < /p>
import sys
import os
from PyQt6.QtWidgets import (
QApplication,
QGraphicsView,
QGraphicsScene,
QGraphicsRectItem,
QPushButton,
QVBoxLayout,
QWidget,
QHBoxLayout,
QCheckBox,
QFileDialog,
)
from PyQt6.QtGui import QPen, QPixmap, QPainter, QColor
from PyQt6.QtCore import Qt, QEvent, QRectF, QPointF
class RectangleItem(QGraphicsRectItem):
def __init__(self, rect, parent=None):
super().__init__(rect, parent)
self.setPen(QPen(Qt.GlobalColor.green, 1, Qt.PenStyle.DashLine))
self.setFlags(
QGraphicsRectItem.GraphicsItemFlag.ItemIsMovable
| QGraphicsRectItem.GraphicsItemFlag.ItemIsSelectable
| QGraphicsRectItem.GraphicsItemFlag.ItemIsFocusable
)
class StickerApp(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Bounding Box Debugger")
self.resize(800, 600)
self.view = QGraphicsView()
self.scene = QGraphicsScene()
self.view.setScene(self.scene)
self.view.viewport().installEventFilter(self)
self.save_bboxes_checkbox = QCheckBox("Save Bounding Boxes")
self.save_bboxes_checkbox.setChecked(False)
self.save_button = QPushButton("Save Image")
self.save_button.clicked.connect(self.save_image)
button_layout = QVBoxLayout()
button_layout.addWidget(self.save_bboxes_checkbox)
button_layout.addWidget(self.save_button)
main_layout = QHBoxLayout()
main_layout.addWidget(self.view)
main_layout.addLayout(button_layout)
self.setLayout(main_layout)
self.current_mode = "select" # 'select' or 'draw'
self.drawing = False
self.start_pos = None
self.current_rect = None
self.bg_pixmap_item = None
self.load_background_image()
# self.draw_triangle() #
Чтобы запустить его, просто запустите Python на нем (я использую изображение, поэтому вы должны заменить это на JPG, который у вас есть), затем нажмите B и нарисуйте изображение. Установите флажок и сохраните изображение. < /p>
Если вы это сделаете, вы получите изображение и текстовый файл. Затем с этим простой сценарием < /p>
import cv2
image_path = "./debu2.png"
txt_path = "./debu2.txt"
colors = [ (0, 255, 0),(255, 0, 0)]
image = cv2.imread(image_path)
if image is None:
print("Error: Could not load image")
exit()
img_height, img_width = image.shape[:2]
print(f"({img_width},{img_height})")
# Read and process bounding box file
with open(txt_path, 'r') as f:
for line in f:
parts = line.strip().split()
if len(parts) != 5:
continue
# Parse values
class_id = parts[0]
c = int (class_id)
x_center = float(parts[1]) * img_width
y_center = float(parts[2]) * img_height
width = float(parts[3]) * img_width
height = float(parts[4]) * img_height
# Convert from center coordinates to corner coordinates
x1 = int(x_center - width/2)
y1 = int(y_center - height/2)
x2 = int(x_center + width/2)
y2 = int(y_center + height/2)
print(f"{x1},{y1},{x2},{y2}")
# Draw rectangle and label
cv2.rectangle(image, (x1, y1), (x2, y2), colors[c], 2)
cv2.putText(image, class_id, (x1, y1-5),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, colors[c], 2)
# Display result
cv2.imshow("Bounding Box Visualization", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
i get
Результаты являются синими. Вы, очевидно, видите, что это неправильно. src = "https://i.sstatic.net/5i3julho.png"/>
Как видно, что синие Bbobes работают здесь.
Как я могу исправить часть, где изображение загружается? src = "https://i.sstatic.net/u1c9peed.jpg"/>
Я ясно вижу, что скрипт изменяет размер изображений, которые нежелательны. Как я могу исправить этот сценарий
Я пишу сценарий, который загружает изображение, и мы можем нарисовать на него Bboxes, нажав клавишу B, а затем перетаскивая мышь. Однако по какой -то причине расчет координат Bboxes (особенно в координате Y) идет неправильно. < /p> мне удалось получить минимальный воспроизводимый код. Вот это < /p> [code]import sys import os from PyQt6.QtWidgets import ( QApplication, QGraphicsView, QGraphicsScene, QGraphicsRectItem, QPushButton, QVBoxLayout, QWidget, QHBoxLayout, QCheckBox, QFileDialog, ) from PyQt6.QtGui import QPen, QPixmap, QPainter, QColor from PyQt6.QtCore import Qt, QEvent, QRectF, QPointF
self.load_background_image() # self.draw_triangle() # Чтобы запустить его, просто запустите Python на нем (я использую изображение, поэтому вы должны заменить это на JPG, который у вас есть), затем нажмите B и нарисуйте изображение. Установите флажок и сохраните изображение. < /p> Если вы это сделаете, вы получите изображение и текстовый файл. Затем с этим простой сценарием < /p> import cv2 image_path = "./debu2.png" txt_path = "./debu2.txt"
colors = [ (0, 255, 0),(255, 0, 0)]
image = cv2.imread(image_path) if image is None: print("Error: Could not load image") exit()
# Display result cv2.imshow("Bounding Box Visualization", image) cv2.waitKey(0) cv2.destroyAllWindows() [/code] i get
Результаты являются синими. Вы, очевидно, видите, что это неправильно. src = "https://i.sstatic.net/5i3julho.png"/> Как видно, что синие Bbobes работают здесь. Как я могу исправить часть, где изображение загружается? src = "https://i.sstatic.net/u1c9peed.jpg"/> Я ясно вижу, что скрипт изменяет размер изображений, которые нежелательны. Как я могу исправить этот сценарий
Я написал сценарий, который позволяет загрузить изображение, нарисовать Bbox на изображении и сохранить его на другое изображение вместе с его нормализованными координатами. Однако после этой проверки я вижу, что Bbox смещается вверх (что означает,...
Я пытался нарисовать bbox на изображении документа, который я пытаюсь распознать, используя Mindee-doctr, чтобы увидеть обнаруженные строки текста. Проблема, с которой я столкнулся, заключается в том, что абсолютные координаты bbox, которые я...
Я реализую программный растеризатор на C++ и пытаюсь протестировать идею алгоритма заполнения треугольников. По сути, идея состоит в том, чтобы найти координаты самого большого прямоугольника (с точки зрения площади/количества пикселей) внутри...
Я работаю над проектом в arcore unity3d, где мне нужно создать 2D-многоугольник из точек 3D-координат, построенных с помощью приложения arcore, аналогичного приложению HelloAR, и получить длину между точками.
В настоящее время у меня есть извлек...
Я не хочу создавать 3D-модель. Я просто хочу преобразовать данную точку на изображении в соответствующую ей трехмерную координату.
Во время исследования я нашел модели глубокого обучения, которые вычисляют глубину, что будет полезно для поиска...