Как сделать линию ROI в open cv подвижной или позволить пользователю нарисовать ее с помощью мыши

Вам нужно проецировать свои данные ( https://docs.mongodb.com/manual/reference/operator/projection/positional/ )

Попробуйте это:

db.crashes.find({}, {"app_id": 1, "title": 1, "os": 1})

Если вы хотите получить элемент массива с последним значением updatedAt, это возможный конвейер:

db.crashes.aggregate([
  {$unwind: '$crash'},
  {$sort: {'crash.crash_reason.updatedAt': -1}},
  {$group: {
     _id: "$app_id",
     title: {$first: "$title"},
     os: {$first: "$os"},
     crash: {$first: "$crash"}
  }}
])

Это будет $unwind массив сбоев (т. е. он создаст документ для каждого элемента массива crash), затем он отсортирует все документы по дате updatedAt (последняя первая). Наконец, он сгруппирует все документы с помощью app_id и возьмет первое значение crash, которое будет последним благодаря предыдущему этапу $sort.

Если вы хотите еще больше сократить свои данные вы можете добавить этап $project в конвейере агрегации до или после этапа $group (например, вы могли бы вырезать все нерелевантные данные на первом этапе для повышения производительности).

Взгляните на документацию для лучшего объяснения ( https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/ )

0
задан Patrick Artner 19 January 2019 в 22:11
поделиться

1 ответ

Посмотрите здесь . Вам нужно захватить координаты мыши и затем использовать cv.line

def click_and_crop(event, x, y, flags, param):
# grab references to the global variables
global refPt, cropping

# if the left mouse button was clicked, record the starting
# (x, y) coordinates and indicate that cropping is being
# performed
if event == cv2.EVENT_LBUTTONDOWN:
    refPt = [(x, y)]
    cropping = True

# check to see if the left mouse button was released
elif event == cv2.EVENT_LBUTTONUP:
    # record the ending (x, y) coordinates and indicate that
    # the cropping operation is finished
    # y = height x = width
    refPt.append((x, y))
    cropping = False
    # draw a rectangle around the region of interest
    #cv.line(input_frame, (0, int(height/2)), (int (width), int(height/2)), (0, 0xFF, 0), 5)
    cv2.line(image,(0, int(y)), (int(width), int(y)), (0, 255, 0), 2)
    cv2.imshow("image", image)
.
0
ответ дан Petros Evangelos Triantafyllis 19 January 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: