Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как выполнять Python в Java / 14 сообщений из 14, страница 1 из 1
19.05.2016, 15:28
    #39239204
Dimmf28
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
Хочу я делать вот такую вот задачку, у меня есть скрипт на Python что переберает фотки в папке, анализирует лица на фотках и делает для них отдельные изображения с лицами, далее уже с этими изображениями я собираюсь работать в Java, по сути мне необходимо все го лиш чтоб при выполнении моего java приложения также выполнялся и скрипт Python вначале до начала работы логики на Java, но я не понимаю как его запихнуть в Java приложение вот скрипт на Python ниже:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
import numpy as np
import cv2
import sys
import glob 

cascPath = "haarcascade_frontalface_default.xml"

# Create the haar cascade
faceCascade = cv2.CascadeClassifier(cascPath)

files=glob.glob("*.jpg")   
for file in files:

    # Read the image
    image = cv2.imread(file)
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # Detect faces in the image
    faces = faceCascade.detectMultiScale(
        gray,
        scaleFactor=1.1,
        minNeighbors=5,
        minSize=(30, 30),
        #flags = cv2.cv.CV_HAAR_SCALE_IMAGE
        flags=0
    )

    print "Found {0} faces!".format(len(faces))

    # Crop Padding
    left = 10
    right = 10
    top = 10
    bottom = 10

    # Draw a rectangle around the faces
    for (x, y, w, h) in faces:
        print x, y, w, h
        image  = image[y-top:y+h+bottom, x-left:x+w+right]
         
        cv2.imwrite("cropped_{1}_{0}".format(str(file),str(x)), image)  
      

        # Dubugging boxes
        cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
    

    #print "cropped_{1}{0}".format(str(file),str(x))
    
...
Рейтинг: 0 / 0
19.05.2016, 15:36
    #39239228
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
Вам надо запихнуть питоновый скрипт в джаву или выполнить код на Питоне перед котом на Джаве?

Если первое, то Jyton, но возникают вопросы наличия всех импортируемых модулей.
Если второе, то просто *.bat / *.sh
...
Рейтинг: 0 / 0
19.05.2016, 15:38
    #39239235
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
Dimmf28,

https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html

Можно, конечно, и Jython попробовать. Но, боюсь, можно выхватить несовместимостей версии или проблем с импортом.
...
Рейтинг: 0 / 0
19.05.2016, 16:19
    #39239313
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
Dimmf28, а можно-ли этот код портировать на Java? Насколько я понимаю OpenCV также далёк от Питона как и Java.

http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html
...
Рейтинг: 0 / 0
20.05.2016, 08:24
    #39239667
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
Dimmf28,

Правильный способ - переписать ваш код полностью на Java.
Правильный способ - оформить код питона в виде микросервиса. И потом вызывать мкиросервис в Java.

Не правильный способ воспользоваться, например, jyton , или вызывать код Питона из Java как внешнее приложение.
...
Рейтинг: 0 / 0
20.05.2016, 11:48
    #39239865
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
mad_nazgul,

+1

На данном этапе я тоже голосую за микро-сервис. Это действительно будет быстрый старт.
А потом конечно подпилить напильником реализацию.
...
Рейтинг: 0 / 0
20.05.2016, 12:03
    #39239881
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
mad_nazgulПравильный способ - оформить код питона в виде микросервиса. И потом вызывать мкиросервис в Java.

Угу, а он гарантировано потокобезопасный? А то будет как с R.

mad_nazgulНе правильный способ воспользоваться, например, jyton , или вызывать код Питона из Java как внешнее приложение.
Мистер категоричность? С вади пример берешь?
...
Рейтинг: 0 / 0
20.05.2016, 12:13
    #39239890
Dimmf28
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
mad_nazgul,

(Правильный способ - оформить код питона в виде микросервиса)

Можете пример мне какой то показать
...
Рейтинг: 0 / 0
20.05.2016, 12:16
    #39239891
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
BazkowiczУгу, а он гарантировано потокобезопасный? А то будет как с R.

Казалось бы, причём тут потоки и R.
...
Рейтинг: 0 / 0
20.05.2016, 12:23
    #39239901
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
BlazkowiczУгу, а он гарантировано потокобезопасный? А то будет как с R.

Это интересно но для задачи вторично. Если он действительно потоко-опасный то и будет
опасным через любые другие интерфейсы сопряжения. А если автору "чето пребирать в папке"
дык это 1 job. Singleton типа.
...
Рейтинг: 0 / 0
20.05.2016, 12:31
    #39239911
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
Partisan MКазалось бы, причём тут потоки и R.
Однопоточные микросервисы? R это классический пример, что когда из тулзы надо сделать сервис, то приходится запускать по одному процессу на поток, если тулза вдруг не рассчитана на многопоточность.
...
Рейтинг: 0 / 0
20.05.2016, 12:34
    #39239916
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
maytonЭто интересно но для задачи вторично. Если он действительно потоко-опасный то и будет
опасным через любые другие интерфейсы сопряжения. А если автору "чето пребирать в папке"
дык это 1 job. Singleton типа.
Ну, что за чушь? Микросервис - один процесс на все запросы. ProcessBuilder - новый процесс на каждый запрос.
...
Рейтинг: 0 / 0
20.05.2016, 12:35
    #39239919
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
Dimmf28mad_nazgul,

(Правильный способ - оформить код питона в виде микросервиса)

Можете пример мне какой то показать
Удачи вам с такими советчиками.
...
Рейтинг: 0 / 0
20.05.2016, 13:34
    #39240017
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выполнять Python в Java
BlazkowiczНу, что за чушь? Микросервис - один процесс на все запросы. ProcessBuilder - новый процесс на каждый запрос.
Блажкович! Дружище ... ну не говорил я про ПроцессБилдер.

Ладно забудь проехали вобщем.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как выполнять Python в Java / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]