Exemplo n.º 1
0
    def _onChange(self):
        import humanmodifier

        if self.slider.isSliderDown():
            # Don't do anything when slider is being clicked or dragged (onRelease triggers it)
            return

        value = self.getValue()
        human = self.modifier.human
        if self.value is None:
            self.value = self.modifier.getValue()
        action = humanmodifier.ModifierAction(self.modifier, self.value, value,
                                              self.update)
        if self.value != value:
            G.app.do(action)
        else:
            # Apply the change anyway, to make sure everything's updated
            # Perform the action without adding it to the undo stack
            action.do()

        if human.isSubdivided():
            if human.isProxied():
                human.getProxyMesh().setVisibility(0)
            else:
                human.getSeedMesh().setVisibility(0)
            human.getSubdivisionMesh(False).setVisibility(1)
        self.value = None
Exemplo n.º 2
0
    def _onChange(self):
        import humanmodifier

        if self.slider.isSliderDown():
            # Don't do anything when slider is being clicked or dragged (onRelease triggers it)
            return

        value = self.getValue()
        human = self.modifier.human
        if self.value is None:
            self.value = self.modifier.getValue()
        if self.value != value:
            G.app.do(humanmodifier.ModifierAction(self.modifier, self.value, value, self.update))
        else:
            # Indicate that onChanging event is ended with onChanged event (type == 'modifier', not 'targets')
            import events3d
            event = events3d.HumanEvent(human, self.modifier.eventType)
            event.modifier = self.modifier.fullName
            human.callEvent('onChanged', event)
        if human.isSubdivided():
            if human.isProxied():
                human.getProxyMesh().setVisibility(0)
            else:
                human.getSeedMesh().setVisibility(0)
            human.getSubdivisionMesh(False).setVisibility(1)
        self.value = None
Exemplo n.º 3
0
 def onClicked(event):
     #img=cv2.imread('/home/smith/PycharmProjects/AutoMakeHuman/src/7_auto_human_body/data/MyAutoData/picture.png')
     #cv2.imshow("img", img)
     #cv2.waitKey(0)
     slider = self.sliders[0]
     slider.modifier.setValue(1)
     sli = modifierslider.ModifierSlider(slider.modifier)
     value = slider.modifier.getValue()
     valuesli = sli.getValue()
     # sli.onChanging(slider.modifier.getValue())
     action = humanmodifier.ModifierAction(slider.modifier, value,
                                           valuesli, sli.update)
     G.app.do(action)
Exemplo n.º 4
0
    def resetValue(self):
        """
        Reset value of slider to default.
        """
        # Right clicking reset the slider to default position
        if self.modifier.getValue() == self.modifier.getDefaultValue():
            return False

        # Reset slider to default action
        import humanmodifier
        G.app.do(humanmodifier.ModifierAction(self.modifier, 
                                              self.modifier.getValue(), 
                                              None,  # Reset 
                                              self.update))
Exemplo n.º 5
0
    def _handleMousePress(self, event):
        if event.button() == gui.QtCore.Qt.RightButton:
            # Right clicking reset the slider to default position
            if self.modifier.getValue() == self.modifier.getDefaultValue():
                return False

            # Reset slider to default action
            import humanmodifier
            G.app.do(humanmodifier.ModifierAction(self.modifier, 
                                                  self.modifier.getValue(), 
                                                  self.modifier.getDefaultValue(), 
                                                  self.update))
            return False
        else:
            # Default behaviour
            return True
Exemplo n.º 6
0
        def onClicked(event):
            log.message('start...')
            for slider in self.sliders:
                for valuenum in range(0, 105, 5):
                    valuenums = valuenum / 100.000000
                    slider.update()
                    # log.message(slider.modifier.getValue())
                    # if slider.enabledCondition:
                    # log.message(slider)
                    slider.modifier.setValue(valuenums)
                    # log.message(slider.modifier.getValue())
                    sli = modifierslider.ModifierSlider(slider.modifier)
                    value = slider.modifier.getValue()
                    valuesli = sli.getValue()
                    # sli.onChanging(slider.modifier.getValue())
                    action = humanmodifier.ModifierAction(slider.modifier, value, valuesli, sli.update)
                    log.message(str(valuesli))
                    log.message(str(value))
                    if valuesli != value:
                        G.app.do(action)
                    else:
                        action.do()

                    filenameImage = fileAotupicture + '/' + str(time.strftime("%Y-%m-%d_%H.%M.%S")) + '.png'
                    filenameIma = fileAotupicture + '/' + str(time.strftime("%Y-%m-%d_%H.%M.%S")) + '.png'
                    filenameIma1 = fileAotupicture + '/result' + str(time.strftime("%Y-%m-%d_%H.%M.%S")), '.png'
                    width = G.windowWidth;
                    height = G.windowHeight;
                    width1 = width - 3;
                    height1 = height - 3;
                    # log.message(filenameImage)
                    mh.grabScreen(0, 0, width, height, filenameImage)
                    img = cv2.imread(filenameImage)
                    height1, width1 = img.shape[:2]
                    # print height,width
                    for i in range(height1):
                        for j in range(width1):
                            r, b, g = img[i][j]
                            rb = abs(r - b)
                            rg = abs(r - g)
                            bg = abs(b - g)
                            if rb < 10 and rg < 10 and bg < 10:
                                img[i][j] = [0, 0, 0]
                            else:
                                img[i][j] = [255, 255, 255]

                    imsave = normalize.Normalize(img)
                    cv2.imwrite(filenameIma, imsave)
                    # cv2.imshow("img",imsave)
                    # cv2.waitKey(10)
                    delt = onpicture()
                    log.message(str(delt))
                    if delt <= deltvalue[0]:
                        deltvalue[0] = delt
                        deltva[0] = valuenums

                num = deltva[0] * 20 + 1
                result = cv2.imread(fileResult + str(num) + '.png')
                cv2.imshow("Result", result)
                cv2.waitKey(0)
                log.message(deltvalue)
                log.message(num)

            slider.modifier.setValue(valuenums)
            # log.message(slider.modifier.getValue())
            sli = modifierslider.ModifierSlider(slider.modifier)
            value = slider.modifier.getValue()
            valuesli = sli.getValue()
            # sli.onChanging(slider.modifier.getValue())
            action = humanmodifier.ModifierAction(slider.modifier, value, valuesli, sli.update)
            G.app.do(action)
            mh.grabScreen(0, 0, width, height, filenameImage)
            imgw = cv2.imread(filenameImage)
            height1, width1 = imgw.shape[:2]
            # print height,width
            for i in range(height1):
                for j in range(width1):
                    r, b, g = imgw[i][j]
                    rb = abs(r - b)
                    rg = abs(r - g)
                    bg = abs(b - g)
                    if rb < 10 and rg < 10 and bg < 10:
                        imgw[i][j] = [0, 0, 0]
                    else:
                        imgw[i][j] = [255, 255, 255]

            imsavew = normalize.Normalize(imgw)
            cv2.imwrite(filenameIma1, imsavew)
Exemplo n.º 7
0
 def worker(sliders, stopSearch):
     log.message('start...')
     for slider in sliders:
         if (stopSearch):
             stopSearch = False
             break
         value = 0
         for valuenum in range(0, 101, 1):
             if (stopSearch):
                 stopSearch = False
                 break
             valuenums = valuenum / 100.000000
             slider.update()
             slider.modifier.setValue(valuenums)
             log.message('slider modifiy value:' + str(valuenums))
             sli = modifierslider.ModifierSlider(slider.modifier)
             # value = slider.modifier.getValue()
             valuesli = sli.getValue()
             # #sli.onChanging(slider.modifier.getValue())
             action = humanmodifier.ModifierAction(
                 slider.modifier, value, valuesli, sli.update)
             log.message('before value:' + str(value))
             # 以下更新场景代码均无效
             if valuesli != value:
                 G.app.do(action)
             else:
                 action.do()
             #gui3d.app.do(action)
             #G.app.do(action)
             #G.app.redraw()
             log.message('update views')
             value = valuesli
             filenameImage = fileAotupicture + '/' + str(
                 time.strftime("%Y-%m-%d_%H.%M.%S")) + '.png'
             filenameIma = fileAotupicture + '/' + str(
                 time.strftime("%Y-%m-%d_%H.%M.%S")) + '.png'
             filenameIma1 = fileAotupicture + '/result' + str(
                 time.strftime("%Y-%m-%d_%H.%M.%S")), '.png'
             width = G.windowWidth
             height = G.windowHeight
             width1 = width - 3
             height1 = height - 3
             log.message('grab screen')
             mh.grabScreen(0, 0, width, height, filenameImage)
             img = cv2.imread(filenameImage)
             height1, width1 = img.shape[:2]
             # print height,width
             for i in range(height1):
                 for j in range(width1):
                     r, b, g = img[i][j]
                     rb = abs(r - b)
                     rg = abs(r - g)
                     bg = abs(b - g)
                     if rb < 10 and rg < 10 and bg < 10:
                         img[i][j] = [0, 0, 0]
                     else:
                         img[i][j] = [255, 255, 255]
             imsave = normalize.Normalize(img)
             log.message('show normalize image')
             try:
                 log.message('cv2 start')
                 cv2.imwrite(filenameIma, imsave)
                 # log.message('cv2 imwrite:'+filenameIma)
                 # newimg=cv2.imread(filenameIma)
                 # log.message('cv2 imread')
                 # cv2.imshow("img", imsave)
                 # log.message('cv2 imshow')
                 ## 60与电脑的刷新频率有关,如果<60刷新频率跟不上,则不会显示图像
                 # cv2.waitKey(60)
                 # cv2.destroyAllWindows()
                 # delt = onpicture()
                 imnew = cv2.imread(filepicture)
                 delt = findcontours.GetDeltValue(imsave, imnew)
                 log.message('delt value:' + str(delt))
                 if delt <= deltvalue[0]:
                     deltvalue[0] = delt
                     deltva[0] = valuenums
             except Exception, e:
                 log.message(e)
         num = deltva[0] * 20 + 1
         # result = cv2.imread(fileResult + str(num) + '.png')
         # cv2.imshow("Result", result)
         # cv2.waitKey(0)
         log.message(deltvalue)
         log.message(num)
Exemplo n.º 8
0
    def __init__(self,
                 category,
                 name,
                 label=None,
                 saveName=None,
                 cameraView=None):
        if label is None:
            label = name.capitalize()
        if saveName is None:
            saveName = name

        super(Modifier1TaskView, self).__init__(category, name, label=label)

        self.saveName = saveName
        self.cameraFunc = _getCamFunc(cameraView)

        self.groupBoxes = OrderedDict()
        self.radioButtons = []
        self.sliders = []
        self.modifiers = {}

        self.categoryBox = self.addRightWidget(gui.GroupBox('Category'))
        self.groupBox = self.addLeftWidget(gui.StackedBox())

        self.showMacroStats = False
        self.human = gui3d.app.selectedHuman
        a = [0]
        deltvalue = [100]
        deltva = [0]
        box = self.addLeftWidget(gui.GroupBox(u'体型自动化'))
        self.aButton = box.addWidget(gui.Button(u'体型搜索'))
        self.bButton = box.addWidget(gui.Button(u'Test'))

        @self.bButton.mhEvent
        def onClicked(event):
            #img=cv2.imread('/home/smith/PycharmProjects/AutoMakeHuman/src/7_auto_human_body/data/MyAutoData/picture.png')
            #cv2.imshow("img", img)
            #cv2.waitKey(0)
            slider = self.sliders[0]
            slider.modifier.setValue(1)
            sli = modifierslider.ModifierSlider(slider.modifier)
            value = slider.modifier.getValue()
            valuesli = sli.getValue()
            # sli.onChanging(slider.modifier.getValue())
            action = humanmodifier.ModifierAction(slider.modifier, value,
                                                  valuesli, sli.update)
            G.app.do(action)

        def worker(sliders, stopSearch):
            log.message('start...')
            for slider in sliders:
                if (stopSearch):
                    stopSearch = False
                    break
                value = 0
                for valuenum in range(0, 101, 1):
                    if (stopSearch):
                        stopSearch = False
                        break
                    valuenums = valuenum / 100.000000
                    slider.update()
                    slider.modifier.setValue(valuenums)
                    log.message('slider modifiy value:' + str(valuenums))
                    sli = modifierslider.ModifierSlider(slider.modifier)
                    # value = slider.modifier.getValue()
                    valuesli = sli.getValue()
                    # #sli.onChanging(slider.modifier.getValue())
                    action = humanmodifier.ModifierAction(
                        slider.modifier, value, valuesli, sli.update)
                    log.message('before value:' + str(value))
                    # 以下更新场景代码均无效
                    if valuesli != value:
                        G.app.do(action)
                    else:
                        action.do()
                    #gui3d.app.do(action)
                    #G.app.do(action)
                    #G.app.redraw()
                    log.message('update views')
                    value = valuesli
                    filenameImage = fileAotupicture + '/' + str(
                        time.strftime("%Y-%m-%d_%H.%M.%S")) + '.png'
                    filenameIma = fileAotupicture + '/' + str(
                        time.strftime("%Y-%m-%d_%H.%M.%S")) + '.png'
                    filenameIma1 = fileAotupicture + '/result' + str(
                        time.strftime("%Y-%m-%d_%H.%M.%S")), '.png'
                    width = G.windowWidth
                    height = G.windowHeight
                    width1 = width - 3
                    height1 = height - 3
                    log.message('grab screen')
                    mh.grabScreen(0, 0, width, height, filenameImage)
                    img = cv2.imread(filenameImage)
                    height1, width1 = img.shape[:2]
                    # print height,width
                    for i in range(height1):
                        for j in range(width1):
                            r, b, g = img[i][j]
                            rb = abs(r - b)
                            rg = abs(r - g)
                            bg = abs(b - g)
                            if rb < 10 and rg < 10 and bg < 10:
                                img[i][j] = [0, 0, 0]
                            else:
                                img[i][j] = [255, 255, 255]
                    imsave = normalize.Normalize(img)
                    log.message('show normalize image')
                    try:
                        log.message('cv2 start')
                        cv2.imwrite(filenameIma, imsave)
                        # log.message('cv2 imwrite:'+filenameIma)
                        # newimg=cv2.imread(filenameIma)
                        # log.message('cv2 imread')
                        # cv2.imshow("img", imsave)
                        # log.message('cv2 imshow')
                        ## 60与电脑的刷新频率有关,如果<60刷新频率跟不上,则不会显示图像
                        # cv2.waitKey(60)
                        # cv2.destroyAllWindows()
                        # delt = onpicture()
                        imnew = cv2.imread(filepicture)
                        delt = findcontours.GetDeltValue(imsave, imnew)
                        log.message('delt value:' + str(delt))
                        if delt <= deltvalue[0]:
                            deltvalue[0] = delt
                            deltva[0] = valuenums
                    except Exception, e:
                        log.message(e)
                num = deltva[0] * 20 + 1
                # result = cv2.imread(fileResult + str(num) + '.png')
                # cv2.imshow("Result", result)
                # cv2.waitKey(0)
                log.message(deltvalue)
                log.message(num)

            slider.modifier.setValue(valuenums)
            # log.message(slider.modifier.getValue())
            sli = modifierslider.ModifierSlider(slider.modifier)
            value = slider.modifier.getValue()
            valuesli = sli.getValue()
            # sli.onChanging(slider.modifier.getValue())
            action = humanmodifier.ModifierAction(slider.modifier, value,
                                                  valuesli, sli.update)
            G.app.do(action)
            mh.grabScreen(0, 0, width, height, filenameImage)
            imgw = cv2.imread(filenameImage)
            height1, width1 = imgw.shape[:2]
            # print height,width
            for i in range(height1):
                for j in range(width1):
                    r, b, g = imgw[i][j]
                    rb = abs(r - b)
                    rg = abs(r - g)
                    bg = abs(b - g)
                    if rb < 10 and rg < 10 and bg < 10:
                        imgw[i][j] = [0, 0, 0]
                    else:
                        imgw[i][j] = [255, 255, 255]
            imsavew = normalize.Normalize(imgw)
            cv2.imwrite(filenameIma1, imsavew)
            # sli.resetValue()
            # syncSliders()
            # slider.modifier.human
            # enabled = getattr(slider.modifier.human, slider.enabledCondition)()
            # slider.setEnabled(str(2))
            # log.message(str(enabled))
            return