Перейти к содержимому
Compvision.ru
Sigmoid

Вывод информации над рамкой

Recommended Posts

помогите пожалуйста с выводом информации над контуром рамки, как отобразить размер рамки, если известно что размер товара 670 пикселей, длина физ 4,1 мм, и как провести центр оси на объект? opencv версии 4.7.0.68, отредактируйте код.

 

спросил Cегодня
Изменено сегодня
Просмотрено 15 раз
-1

помогите пожалуйста с выводом информации над контуром рамки, как отобразить размер рамки, если известно что размер товара 670 пикселей, длина физ 4,1 мм, и как провести центр оси на объект? opencv версии 4.7.0.68, отредактируйте код.

import numpy as np

import cv2

cap = cv2.VideoCapture ( 1 )

kernel = np.ones ( (2 , 2) , np.uint8 )

while (True):

    # Capture frame-by-frame

    ret , frame = cap.read ()

    # Our operations on the frame come here

    gray = cv2.cvtColor ( frame , cv2.COLOR_BGR2GRAY )

    gray = cv2.GaussianBlur ( gray , (7 , 7) , 0 )

    gray = cv2.medianBlur ( gray , 5 )  # to remove salt and paper noise

    # to binary

    ret , thresh = cv2.threshold ( gray , 128 , 128 , 128 )  # to detect white objects

    # to get outer boundery only

    thresh = cv2.morphologyEx ( thresh , cv2.MORPH_GRADIENT , kernel )

    # to strength week pixels

    thresh = cv2.dilate ( thresh , kernel , iterations = 1 )

    im2 = contours , hierarchy = cv2.findContours ( thresh , cv2.RETR_EXTERNAL , cv2.CHAIN_APPROX_SIMPLE )

    if len ( contours ) > 0:

        cv2.drawContours ( frame , contours , -1 , (0 , 255 , 0) , 3 )

        # find the biggest countour (c) by the area

        c = max ( contours , key = cv2.contourArea )

        x , y , w , h = cv2.boundingRect ( c )

        # draw the biggest contour (c) in green

        cv2.rectangle ( frame , (x , y) , (x + w , y + h) , (255 , 0 , 0) , 2 )

    # Display the resulting frame

    cv2.imshow ( 'frame' , frame )

    if cv2.waitKey ( 27 ) & 0xFF == ord ( 'q' ):

        break

# When everything done, release the capture

cap.release ()

cv2.destroyAllWindows ()

IMG_20230121_114526.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я не уверен понял пробблему, проблема с выводом текста в заданные координаты?

https://www.geeksforgeeks.org/python-opencv-cv2-puttext-method/

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть информация когда печатаю 

print(frameWidth) - в консоли выводит сообщение ширины "640", 

Так вот эту информацию 640 нужно вывести непосредственно над синей рамкой контура, 

 

И ещё я не знаю как найти центроид в контуре в виде линии которая будет рисовать ось.

 

Буду рад любой информации

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так в программе, которую Вы приводите выше, координаты прямоугольника, ограничивающего контур, x,y - это верзнй левый угол, w, h - ширина и вытота.

Центр - x+w/2, y+h/2

Как выводить текст, см. пример по ссылке в моем предыдущем ответе.

Русские буквы стандартный cv2.outText не выведет, используйте латиницу.

  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Получилось, но при повороте объекта центр фрейма слетает с центра объекта(

Как можно нарисовать контур именно в центре объекта ?63ced12517800_PhotoCollageMaker_2023_01_23_09_16_58.thumb.jpg.f6282242bed581693607af14085912bf.jpg

В силу моего незнания - долго искал выход найти середину фрейма, вроде получилось с помощью 

 

 

cv2.rectangle (frame,(x,y),(x+w*1,y+h//2),(255,255,0),2)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ищите  собственные оси и центр масс.
Тут пример: https://robospace.wordpress.com/2013/10/09/object-orientation-principal-component-analysis-opencv/

  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Посмотрите еще:  cv.minAreaRect

собственные оси и этот метод рабртают немного по раному, смотрите сами какой больше подходит.

Описание здесь: https://docs.opencv.org/3.4/dd/d49/tutorial_py_contour_features.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×