繁体   English   中英

如何根据单选按钮选择将图像动态加载到 cv2

[英]How can I load an image into cv2 dynamically based on radiobutton selection

我正在使用字符的单选按钮将字符选择添加到队列接受工具。 字符选择基于使用 cv2 进行的 object 检测,我需要这样做,以便您 select 影响文件 cv2 打开的任何字符。

这就是我正在使用的:

def selection():
    
    if select:
        screenshot = wincap.get_screenshot()

        # Import selection to Vision Class
        test=0
        test=v.get()
        characterSearch = charSearch('./CharacterSelect/' + str(characters[test]+'.jpg'))
        print('./CharacterSelect/' + str(characters[test]+'.jpg'))
        characterMatch = characterSearch.find(screenshot, .63, 'rectangles')
        if len(characterMatch):
            charSelect_off()
    
    window.after(500, selection)

#Stores interger values
v = IntVar()
v.set = ()

# Radio button loops for character select
for index in range(len(characters)):
    Radiobutton(bottomframe,
        compound = TOP,
        image = portraits[index],
        text = characters[index],
        variable = v,
        value = index,
    ).grid(
        row = index//5,
        column = index%5,
    )

这个错误说它找不到路径。 然而,打印能够打印选择。 因此,我需要找到一种使用 cv2.imread() 创建动态 str 的方法才能执行此操作。 或者完全是另一个选项,比如如果我可以从通过 tkinter 加载的图像列表中读取它,那也可以工作,因为我已经构建了一个列表,所以如果我可以索引它,那也会更优化。

编辑:添加收到的错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\lugex\AppData\Local\Programs\Python\Python311\Lib\tkinter\__init__.py", line 1948, in __call__
    return self.func(*args)
           ^^^^^^^^^^^^^^^^
  File "C:\Users\lugex\AppData\Local\Programs\Python\Python311\Lib\tkinter\__init__.py", line 861, in callit
    func(*args)
  File "c:\Users\lugex\OneDrive\Documents\Projects\Queue-Companion\main.py", line 182, in start
    win32gui.SetForegroundWindow(handle)
pywintypes.error: (0, 'SetForegroundWindow', 'No error message is available')
[ WARN:0@11.286] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_('./CharacterSelect/Adriana.jpg'): can't open/read file: check file path/integrity
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\lugex\AppData\Local\Programs\Python\Python311\Lib\tkinter\__init__.py", line 1948, in __call__
    return self.func(*args)
           ^^^^^^^^^^^^^^^^
  File "C:\Users\lugex\AppData\Local\Programs\Python\Python311\Lib\tkinter\__init__.py", line 861, in callit
    func(*args)
  File "c:\Users\lugex\OneDrive\Documents\Projects\Queue-Companion\main.py", line 188, in start
    search_on()
  File "c:\Users\lugex\OneDrive\Documents\Projects\Queue-Companion\main.py", line 154, in search_on
    Char_Search()
  File "c:\Users\lugex\OneDrive\Documents\Projects\Queue-Companion\main.py", line 207, in Char_Search
    search_off()
  File "c:\Users\lugex\OneDrive\Documents\Projects\Queue-Companion\main.py", line 160, in search_off
    charSelect_on()
  File "c:\Users\lugex\OneDrive\Documents\Projects\Queue-Companion\main.py", line 165, in charSelect_on
    selection()
  File "c:\Users\lugex\OneDrive\Documents\Projects\Queue-Companion\main.py", line 220, in selection
    characterSearch = charSearch('./CharacterSelect/' + str(characters[test]+'.jpg'))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\lugex\OneDrive\Documents\Projects\Queue-Companion\vision.py", line 206, in __init__
    self.accept_w = self.accept_img.shape[1]
                    ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'shape'

当我发现这个时,我能够弄清楚: https://stackoverflow.com/a/48562343/20593304

使用我创建的字符串创建动态路径。

    charVariable=0
    charVariable=v.get()
    pathtoCharacters = os.path.join(os.getcwd(), "CharacterSearch", str(characters[charVariable]+".jpg"))
    characterSearch = charSearch(pathtoCharacters)

然后对我的 class 执行 object 检测。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM