我想将"图像加载按钮"添加到我的opencv项目中



我做了一个简单的OpenCV绘画程序。(用于创建掩码(

在下面的程序中,图像的路径写在源代码中。(硬编码(

但是,我想通过按钮加载图像。

如何在此程序上制作按钮?

import cv2 as cv
import numpy as np

win_name ='Image Recovery'
image_path='earth.jpg'
penThick=10

def onChange(value):
global penThick
penThick = cv.getTrackbarPos('penThick', win_name)
print(penThick)
def mouse_callback(event, x, y, flags, param):
global srcImage, maskLayer, paintingImage
#paintingImage = param[0]
#maskLayer = param[1]
if event == cv.EVENT_MOUSEMOVE :
if flags & cv.EVENT_LBUTTONDOWN :
cv.circle(maskLayer, (x,y), penThick, (0, 0, 0), -1);
cv.circle(paintingImage, (x, y), penThick, (0, 0, 0), -1);
if event == cv.EVENT_RBUTTONDBLCLK :
maskLayer = (255,255,255)
paintingImage = cv.imread(image_path, cv.IMREAD_ANYCOLOR)
cv.imshow(win_name, paintingImage)

if __name__ == '__main__':
global srcImage, maskLayer, paintingImage
srcImage = cv.imread(image_path, cv.IMREAD_ANYCOLOR)
paintingImage = cv.imread(image_path, cv.IMREAD_ANYCOLOR)
maskLayer = np.zeros((srcImage.shape[0], srcImage.shape[1] , 3), np.uint8)
maskLayer[:] = (255,255,255)
cv.namedWindow(win_name, cv.WINDOW_GUI_EXPANDED)
cv.imshow(win_name, paintingImage)
cv.setMouseCallback(win_name,mouse_callback, (paintingImage, maskLayer))
cv.createTrackbar('penThick',win_name, 10, 15, onChange)
cv.waitKey(0)
cv.imwrite("out.png", maskLayer)
cv.destroyAllWindows()

从你的代码中,我无法判断你用什么作为 GUI。

最平易近人的GUI来自python标准库。它看起来有点不合适,但它可以完成工作。

您可以尝试在程序中安装以下代码。

from tkinter import Tk, filedialogue

gui_root = Tk()
image_path = filedialogue.askopenfilename(initialdir=“/“, title=“Pick an Image”, filetypes=((“Image Files”, “*.jpg”),(“All Files”, “*.*”)

最新更新