À±¶õ¤Ä¤Å¤ê

À±¶õ¡¦Å·Âμ̿¿¤Ê¤É¤Îµ­Ï¿¤òÄÖ¤ë¥Ö¥í¥°

<< March 2024 | 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 >>

<< µíÁë¤Ë¤Æ | TOP | ¿·Ç¯¤Î¤´°§»¢¤Ê¤É >>

2020.06.23 Tuesday

Python:OpenCV¤Ë¤è¤ë²èÁü¥Ñ¥¿¡¼¥óǧ¼±¤Î¤¿¤á¤Îµ¡³£³Ø½¬¤ËÊØÍø¤Ê»Ù±ç¥Ä¡¼¥ë¤òºî¤Ã¤Æ¤ß¤¿

ºòº£¡¢Python¤ÇAI¤òÊÙ¶¯¤·¤Æ¤¤¤ë¿Í¤Ï¿¤¤¤È»×¤¤¤Þ¤¹¡£

¥Í¥Ã¥È¤ä´ØÏ¢»¨»ï¡¦½ñÀҤǤϡ¢OpenCV¤ò»È¤Ã¤¿²èÁüǧ¼±¤µ¤»¤ë¤Ã¤Æ¤È¤³¤í¤¬Æþ¤ê¸ý¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤¬Â¿¤¤¤Ç¤¹¤è¤Í¡£

 

ÀŻ߲è¤Ç¤âWEB¥«¥á¥é¤ÎÆ°²è±ÇÁü¤«¤é¤Ç¤â´Êñ¤Ëǧ¼±¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¤Î¤ÏÂçÊÑÌÌÇò¤¤¤Ç¤¹¤¬¡¢Ç§¼±¤Î¤¿¤á¤ËɬÍפʤΤ¬³Ø½¬ºÑ¤ß¤Î¥«¥¹¥±¡¼¥ÉʬÎà´ï¡Êxml¥Õ¥¡¥¤¥ë¡Ë¡£

´éǧ¼±¤òÂåɽ¤È¤·¤Æ³Ø½¬ºÑ¤ß¤Î¥«¥¹¥±¡¼¥ÉʬÎà´ï¤Ï¥Í¥Ã¥È¾å¤Ç¼ê¤ËÆþ¤ì¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¤¬¡¢Æȼ«¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òǧ¼±¤µ¤»¤ë¤¿¤á¤Ë¤Ï¡¢¼«Á°¤Ç¥ª¥Ö¥¸¥§¥¯¥È¤Î²èÁü¤ò¤¿¤¯¤µ¤ó³Ø½¬¤µ¤»¡¢Ê¬Îà´ï¤òºîÀ®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

 

¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï¡¢ÅÓÃæ¤Îºî¶È¤ÇɬÍ×¤Ê poslist , neglist ¥Õ¥¡¥¤¥ë¤ÎºîÀ®»Ù±ç¤ò¹Ô¤¦¥Ä¡¼¥ë¤òÇÛÉÛ¤·¤Æ¤¤¤Þ¤¹¡£

¤Þ¤º¤Ï¡¢OpenCV¤ò»È¤Ã¤¿¥Ñ¥¿¡¼¥óǧ¼±¤Îµ¡³£³Ø½¬¤ò¤µ¤»¤ë¤¿¤á¤Îή¤ì¤ò³Îǧ¤·¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£

 

¢§³Ø½¬´Ä¶­¤òºî¤ë

¡¦É¬Íפʼ¹ԥե¡¥¤¥ë¤ä¥Õ¥©¥ë¥À¤ò½àÈ÷¤¹¤ë

¢¨¤³¤³¤Ç¤ÏÀâÌÀ¤·¤Þ¤»¤ó¤Î¤Ç¾¤Î¥µ¥¤¥È¤ò»²¹Í¤Ë

¡Ê»²¹Í¥µ¥¤¥È¡Ë

¡ÚPythonÈÇOpenCVÆþÌç¡Û»È¤¤Êý¤È¥µ¥ó¥×¥ë½¸

OpenCV¤ÎÊÙ¶¯­£¡ÊʬÎà´ï¤òºîÀ®¤·¤Æ¤ß¤ë¡Ë

openCV¤Ç¿ÍʪÆÃÄê¤ÎʬÎà´ï¤ò¼«ºî

OpenCV ʪÂθ¡½Ð¡¢Ê¬Îà´ïºîÀ®¤È¸¡½Ð¥Æ¥¹¥È¡¡¤½¤Î£²

 

¢§¥ª¥Ö¥¸¥§¥¯¥È¤¬¼Ì¤Ã¤Æ¤¤¤ë¼Ì¿¿¡¢¼Ì¤Ã¤Æ¤¤¤Ê¤¤¼Ì¿¿¤ò¤½¤ì¤¾¤ì½¸¤á¤ë

¡¦ÀºÅÙ¤ò¾å¤²¤ë¤¿¤á¤Ë¤Ï¿ôÉ´Ëç¡Á¿ôÀéËçɬÍפǤ¹¡£¥Í¥Ã¥È²èÁü¤Ê¤É¤ò¼ý½¸¤·¤Þ¤¹

¡¦°ìËç¤Î²èÁü¤«¤éÏĤߡ¢²óž¤Ê¤É¤ò²Ã¤¨¤ÆÊ£¿ôËçºîÀ®¤Ç¤­¤ë opencv_createsamples.exe ¤ò³èÍѤ¹¤ëÊýË¡¤â¤¢¤ë

 

¢§¥ª¥Ö¥¸¥§¥¯¥È¤¬¼Ì¤Ã¤Æ¤¤¤ë¼Ì¿¿¤«¤éPositive-list (Poslist.txt)¤òºîÀ®¤¹¤ë

¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¤ß¤ò¥È¥ê¥ß¥ó¥°¤·¤¿¼Ì¿¿¤òÍÑ°Õ¤¹¤ë¤«¡¢¼Ì¿¿¤«¤éÎΰèÁªÂò¤ò¤·¤Æ¤½¤ÎºÂɸ¤òPoslist¤Ëµ­Ï¿¤·¤Þ¤¹

¢¨¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï¡¢³Æ²èÁü¤ò¥í¡¼¥É¤·¤ÆPoslistºîÀ®»þ¤ÎÎΰèÁªÂò¤ò¹Ô¤¤¡¢Poslist¥Õ¥¡¥¤¥ë¤ËºÂɸµ­Ï¿¤¹¤ë»Ù±ç¥Ä¡¼¥ë¤òÇÛÉÛ¤·¤Æ¤¤¤Þ¤¹

 

¢§¥ª¥Ö¥¸¥§¥¯¥È¤¬¼Ì¤Ã¤Æ¤¤¤Ê¤¤¼Ì¿¿¤«¤éNegative-list (Neglist.txt¡Ë¤òºîÀ®¤¹¤ë

¡¦²èÁü¤Ï²¿¤Ç¤â£Ï£Ë

¡¦Neglist.txt¤Ï²èÁü¥ê¥¹¥È¤È¤·¤Æ¥Õ¥ë¥Ñ¥¹¤Ç¤Î¥Õ¥¡¥¤¥ë̾°ìÍ÷¤ò½àÈ÷¤¹¤ë

¢¨¤³¤Î¥Ú¡¼¥¸¤Ç¤Ï¡¢¥Õ¥©¥ë¥ÀÆâ¤Î¥Õ¥¡¥¤¥ë¤«¤é°ìȯ¤Ç¥Õ¥ë¥Ñ¥¹¤Î¥Õ¥¡¥¤¥ë̾°ìÍ÷¡ÊNeglist.txt¡Ë¤òºîÀ®¤¹¤ë»Ù±ç¥Ä¡¼¥ë¤òÇÛÉÛ¤·¤Æ¤¤¤Þ¤¹

 

¢§¥«¥¹¥±¡¼¥ÉʬÎà´ï¤ÎºîÀ®

¢¨¤³¤³¤Ç¤ÏÀâÌÀ¤·¤Þ¤»¤ó¤Î¤Ç¾¤Î¥µ¥¤¥È¤ò»²¹Í¤Ë

 

¢§¤Ç¤­¤¢¤¬¤Ã¤¿Ê¬Îà´ï¡Êxml¥Õ¥¡¥¤¥ë¡Ë¤ò¥»¥Ã¥È¤·¤Æ¥Ñ¥¿¡¼¥óǧ¼±½ÐÍè¤ë¤«¤É¤¦¤«¸¡¾Ú

¢¨¤³¤³¤Ç¤ÏÀâÌÀ¤·¤Þ¤»¤ó¤Î¤Ç¾¤Î¥µ¥¤¥È¤ò»²¹Í¤Ë

 

ή¤ì¤È¤·¤Æ¤Ï¤½¤ó¤Ê¤È¤³¤í¤Ç¤·¤ç¤¦¤«¡£Î®¤ì¤ÎÃæ¤ÇÆó¤Ä¤Î»Ù±ç¥Ä¡¼¥ë¤òÍÑ°Õ¤·¤¿¤Î¤Ç°Ê²¼¤ËŽ¤êÉÕ¤±¤Æ¤ª¤­¤Þ¤¹¡£¤´¼«Í³¤Ë¤ª»È¤¤¤¯¤À¤µ¤¤¡£

¤½¤ì¤¾¤ì¤Î»Ù±ç¥Ä¡¼¥ë¤ÏʬÎà´ïºîÀ®ÍÑ¥Õ¥©¥ë¥À¤Ë¥³¥Ô¡¼¤·¤Æ¤ª»È¤¤¤¯¤À¤µ¤¤¡£

 

¥Ý¥¸¥Æ¥£¥Ö¥ê¥¹¥ÈºîÀ®»Ù±ç¥Ä¡¼¥ë

 

°Ê²¼¤Î¥¹¥¯¥ê¥×¥È¤ò¥³¥Ô¥Ú¤·¤Æ¡¡tool-poslist-maker.py¡¡¤È¤·¤ÆÊݸ¤·¤Æ»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤

»ÈÍÑÊýË¡¤Ï¥¹¥¯¥ê¥×¥ÈÆâ¤Ëµ­ºÜ¤·¤Æ¤¤¤Þ¤¹

Æ°ºîÃæ¤Î²èÌ̤ϰʲ¼¤Î´¶¤¸¤Ç¤¹

 

 

----------------------------------------------------------------

# OpenCVµ¡²ñ³Ø½¬ÍÑPosList¤ÎºîÀ®¥Ä¡¼¥ë

# tool-poslist-maker.py
#
# ÌÜŪ¡§OpenCVʬÎà´ï¤Ë¤ª¤±¤ë¥Ý¥¸¥Æ¥£¥Ö¥¤¥á¡¼¥¸¤ÎÈÏ°Ï»ØÄê¤ËɬÍפÊ
# Poslist.txt¤ÎºîÀ®¤ò¹Ô¤¤¤Þ¤¹
# ³Ø½¬¤µ¤»¤¿¤¤ÂоÝʪ¤ò²èÁüÆâ¤Ç°Ï¤¦¤³¤È¤Ç¡¢²èÁü¾å¤ÎÂоݿô¤ÈºÇÂçÈϰϤò
# Poslist¤ÎÍ×µá·Á¼°¤Ë¤Æ½ñ¤­½Ð¤·¤·¤Þ¤¹
#
# »ÈÍÑÊýË¡¡§
# »ØÄê¤Î²£Éý¤Ë¤Æ½Ä²£Èæ°Ý»ý¤Ç²èÁüɽ¼¨¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢
# ¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤Ç»Í³Ñ·Á¤ÎÂгѤò¤½¤ì¤¾¤ì»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£
# °ìËç¤Î²èÁüÆâ¤Ç¡¢MAXPOINT ¤ÎÀßÄêÃͤޤǻØÄê¤Ç¤­¤Þ¤¹¡£
# ÂоÝʪÁ´¤Æ¤Î°Ï¤¤¤¬½ª¤ï¤ì¤Ð¡¢(s)¥­¡¼²¡²¼¤Ë¤ÆPoslist¤Ø½ñ¤­¹þ¤ß¸å¡¢
# ¼¡¤Î²èÁü¤ò¼«Æ°Åª¤Ë¥í¡¼¥É¤·¤Þ¤¹
# ºî¶È¤òÅÓÃæ¤Ç¤ä¤á¤¿¤¤¾ì¹ç¤Ï¡¢ESC¥­¡¼²¡²¼¤Ç½ªÎ»¤·¤Þ¤¹¡£
# ¤Ê¤ª¡¢¼¡²ó³«»Ï»þ¤Ï¡¢Poslist.txt¤ò¥ê¡¼¥É¤·¤Æ¡¢Â³¤­¤Î²èÁü¥Õ¥¡¥¤¥ë¤«¤é
# ºî¶È¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
# ¤Ê¤ª¡¢ÆüËܸì¤Ê¤É¤Î£²¥Ð¥¤¥È·Ïʸ»ú¤ò´Þ¤à²èÁü¥Õ¥¡¥¤¥ë̾¤ÏÈò¤±¤Æ¤¯¤À¤µ¤¤
# ¤³¤Î¥Ä¡¼¥ë¤ò»È¤¦Á°½èÍý¤È¤·¤Æ¡¢²èÁü¥Õ¥¡¥¤¥ë¤ÏÏ¢ÈÖ¡ÊÎ㡧0001.jpg¡Ë̾¤Ë
# ¤·¤Æ¤ª¤¯¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹
# ¤Þ¤¿¡¢ºî¶ÈÃæ¤Î½¤Àµµ¡Ç½¤ÏÁȤ߹þ¤ó¤Ç¤¤¤Þ¤»¤ó¡£ÂгѻØÄê¤Î°ÌÃÖ¤ò´Ö°ã¤Ã¤¿
# ¾ì¹ç¤Ï¡¢¤½¤Î¾ìESC¤Ç½ªÎ»¤µ¤»¡¢ºÆÅ٥ġ¼¥ë¤ò¼Â¹Ô¤µ¤»¤Æ¤¯¤À¤µ¤¤
#
# 2020/05/26 original ver.1.00
# coded by Sirius@À±¶õ¤Ä¤Å¤ê¡Ê²¬»³¥¢¥¹¥È¥í¥¯¥é¥Ö ÂçÅç¡Ë
#
# ²þÊÑ»ÈÍÑ¡¢²þÊѸå¤ÎºÆÇÛÉۤʤɤ´¼«Í³¤Ë¡£¤¿¤À¤·²þÊѸåÇÛÉۤκݤϡ¢²þÊѼÔ
# ̾¤ò¤³¤Î¥³¥á¥ó¥È¼¡¹Ô¤Ëɬ¤ºÄɵ­¤·¤Æ¤¯¤À¤µ¤¤
#
#

import glob,os,codecs
import cv2


# mouse callback function ¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤Çº¸¾å¡¢±¦²¼¤ÎºÂɸ¤ò½ç¤Ëµ­Ï¿
def draw_rect(event,x,y,flag,param):
    global done,sx,sy,ex,ey,PCount
    if event == cv2.EVENT_LBUTTONDBLCLK:
        if PCount < MAXPOINT:
            if done:
                ex.append(x)
                ey.append(y)
                print(PCount+1,') end=',x,y)
                cv2.rectangle(img,(sx[PCount],sy[PCount]),(x,y),(255,255,0),5)
                done = False
                PCount += 1
            else:
                sx.append(x)
                sy.append(y)
                print(PCount+1,') start=',x,y)
                done = True
                cv2.circle(img,(x,y),10,(255,255,255),-1)
        else:
            print('MAX POINTS!')

 

if __name__ == '__main__':

    FILE_PATH = './pos/' # ¥Ý¥¸¥Æ¥£¥Ö¥¤¥á¡¼¥¸(.jpg)¥Õ¥¡¥¤¥ë¤Î³ÊǼ¥Õ¥©¥ë¥À
    FILE_NAME = FILE_PATH + 'poslist.txt'
    
    VIEW_WINDOW_NAME = 'View'
    MAXPOINT = 20
    WINDOW_RESIZE_WIDTH = 800
    msg = 'All input is completed.'

    file_list = sorted(glob.glob(FILE_PATH + '*.jpg'))

    # Poslist¤¬´û¤Ë¤¢¤ì¤Ð¡¢Á°²ó¤Î³¤­¤«¤é¤ä¤ë¤è¤¦¤Ë¤¹¤ë
    try:
        with codecs.open(FILE_NAME,'r','utf-8') as fr:
            lines = fr.readlines()
            lineCount = len(lines)
            print('From the last continuation')
            del file_list[0:lineCount]
    except Exception as e:
        print('Create poslist as a new file')

    for imgfile in file_list:
        sx,sy = [],[] #º¸¾åºÂɸ³ÊǼÍѶõ¥ê¥¹¥È
        ex,ey = [],[] #±¦²¼ºÂɸ³ÊǼÍѶõ¥ê¥¹¥È
        PCount = 0 #»ØÄꤷ¤¿»Í³Ñ·Á¤Î¿ô
        done = False #º¸¾åºÂɸ¼èÆÀºÑ¤ß=True

        img = cv2.imread(imgfile)
        imgfile = os.path.basename(imgfile)
        print('Loading..Image:',imgfile)
        
        # ²èÁü¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤ò¼èÆÀ
        height = img.shape[0]
        width = img.shape[1]

        # ²£Éý¸ÇÄê¡Ê½Ä²£Èæ¤Ï¥ª¥ê¥¸¥Ê¥ë°Ý»ý¡Ë¤Î¥¦¥£¥ó¥É¥¦¤Ë²èÁü¥í¡¼¥É
        resizew = WINDOW_RESIZE_WIDTH
        resizeh = int(height * (resizew/width))

        cv2.namedWindow(VIEW_WINDOW_NAME,cv2.WINDOW_NORMAL)
        cv2.resizeWindow(VIEW_WINDOW_NAME,resizew,resizeh)

        cv2.setMouseCallback(VIEW_WINDOW_NAME,draw_rect)

        while True:
            cv2.imshow(VIEW_WINDOW_NAME,img)
            k = cv2.waitKey(20) & 0xFF
            if k == 27: # ESC¤Ç½ªÎ»¤Ø
                break
            elif k == ord('s'): # s²¡²¼»þ¡¢ÈÏ°Ï»ØÄ꤬°ì¤Ç¤â¤¢¤ì¤Ð¤½¤ì¤é¤ÎÎΰè¿ô¤ÈºÇÂçÎΰè¤òÊݸ
                if PCount > 0:
                    with codecs.open(FILE_NAME,'a','utf-8') as ft:
                        line = '{} {}'.format(imgfile,PCount)
                        ci = 0
                        while ci < PCount:
                            line = line + ' {} {} {} {}'.format(sx[ci],sy[ci],ex[ci],ey[ci])
                            ci += 1
                        line = line + '¥n'
                        ft.write(line)
                        print('Saved..',line)
                    break

        cv2.destroyAllWindows()
        if k == 27:
            msg = 'End with ESC key.'
            break
        else:
            continue
    print(msg)

----------------------------------------------------------------

 

 

¥Í¥¬¥Æ¥£¥Ö¥ê¥¹¥ÈºîÀ®»Ù±ç¥Ä¡¼¥ë

 

°Ê²¼¤Î¥¹¥¯¥ê¥×¥È¤ò¥³¥Ô¥Ú¤·¤Æ¡¡tool-neglist-maker.py¡¡¤È¤·¤ÆÊݸ¤·¤Æ»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤

»ÈÍÑÊýË¡¤Ï¥¹¥¯¥ê¥×¥ÈÆâ¤Ëµ­ºÜ¤·¤Æ¤¤¤Þ¤¹

 

----------------------------------------------------------------

# OpenCVµ¡²ñ³Ø½¬ÍÑNegList¤ÎºîÀ®¥Ä¡¼¥ë
# tool-neglist-maker.py

#
# ÌÜŪ¡§OpenCVʬÎà´ï¤Ë¤ª¤±¤ë¥Í¥¬¥Æ¥£¥Ö¥¤¥á¡¼¥¸¤Î¥Õ¥¡¥¤¥ë¥ê¥¹¥È¡¢
# neglist.txt ¤òºîÀ®¤·¤Þ¤¹¡£
#
# »ÈÍÑÊýË¡¡§
# /neg ¥Õ¥©¥ë¥ÀÆâ¤Îjpg²èÁü¤ËÂФ·¤Æ¥Õ¥ë¥Ñ¥¹¤Ç¤Î¥Õ¥¡¥¤¥ë¥ê¥¹¥È¤òºîÀ®¤·¤Þ¤¹
# ¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤À¤±¤Ç¤¹¡£
#
# ¤Ê¤ª¡¢ÆüËܸì¤Ê¤É¤Î£²¥Ð¥¤¥È·Ïʸ»ú¤ò´Þ¤à²èÁü¥Õ¥¡¥¤¥ë̾¤ÏÈò¤±¤Æ¤¯¤À¤µ¤¤
# ¤³¤Î¥Ä¡¼¥ë¤ò»È¤¦Á°½èÍý¤È¤·¤Æ¡¢²èÁü¥Õ¥¡¥¤¥ë¤ÏÏ¢ÈÖ¡ÊÎ㡧0001.jpg¡Ë̾¤Ë
# ¤·¤Æ¤ª¤¯¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹
#
# 2020/05/26 original ver.1.00
# coded by Sirius@À±¶õ¤Ä¤Å¤ê¡Ê²¬»³¥¢¥¹¥È¥í¥¯¥é¥Ö ÂçÅç¡Ë
#
# ²þÊÑ»ÈÍÑ¡¢²þÊѸå¤ÎºÆÇÛÉۤʤɤ´¼«Í³¤Ë¡£¤¿¤À¤·²þÊѸåÇÛÉۤκݤϡ¢²þÊѼÔ
# ̾¤ò¤³¤Î¥³¥á¥ó¥È¼¡¹Ô¤Ëɬ¤ºÄɵ­¤·¤Æ¤¯¤À¤µ¤¤
#
#


import glob,codecs,os

if __name__ == '__main__':

    # ¥Í¥¬¥Æ¥£¥Ö¥¤¥á¡¼¥¸(.jpg)¥Õ¥¡¥¤¥ë¤Î³ÊǼ¥Õ¥©¥ë¥À
    FILE_PATH = './neg/'
    FILE_NAME = FILE_PATH + 'neglist.txt'
    
    msg = 'Create neglist.txt as a new file.'

    file_list = sorted(glob.glob(FILE_PATH + '*.jpg'))
    with codecs.open(FILE_NAME,'w','utf-8') as ft:
        for imgfile in file_list:
            line = os.path.abspath(imgfile) + '¥n'
            ft.write(line)

    print(msg)

----------------------------------------------------------------


¢¥top