Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使矩形透明?_Python_Opencv_Opencv Python - Fatal编程技术网

Python 如何使矩形透明?

Python 如何使矩形透明?,python,opencv,opencv-python,Python,Opencv,Opencv Python,所以我使用opencv,我想制作一种选择工具,但问题是不能使矩形透明。代码如下: import numpy as np import cv2 as cv drawing = False def draw_rec(event,x,y,flags,param): global ix,iy,drawing if event == cv.EVENT_LBUTTONDOWN: drawing = True ix,iy = x,y elif even

所以我使用opencv,我想制作一种选择工具,但问题是不能使矩形透明。代码如下:

import numpy as np
import cv2 as cv
drawing = False

def draw_rec(event,x,y,flags,param):
    global ix,iy,drawing
    if event == cv.EVENT_LBUTTONDOWN:
        drawing = True
        ix,iy = x,y
    elif event == cv.EVENT_LBUTTONUP:
        drawing = False
        cv.rectangle(img,(ix,iy),(x,y),(0,0,0),-1)
    elif event == cv.EVENT_MOUSEMOVE:
        if drawing == True:
            cv.rectangle(img, (ix, iy), (x, y), (0, 255, 0), 5)
img = cv.imread('baboon.jpg', -1)
cv.namedWindow('image')
cv.setMouseCallback('image',draw_rec)
while(1):
    cv.imshow('image',img)
    k = cv.waitKey(1) & 0xFF
    if k == 27:
        break
cv.destroyAllWindows()


代码中的第一个错误是:

elif event==cv.event\u LBUTTONUP:
绘图=错误
等速矩形(img,(ix,iy),(x,y),(0,0,0),-1)
-1
参数表示填充矩形。如果我们将-1改为1:

在我看来,结果并不令人满意。多矩形显示是由鼠标移动引起的

elif event==cv.event\u MOUSEMOVE:
如果图形==真:
等速矩形(img,(ix,iy),(x,y),(0,255,0),5)
每次鼠标移动时,将绘制矩形。我认为最好在鼠标移动结束时绘制:

代码:


将numpy导入为np
将cv2作为cv导入
绘图=错误
def draw_rec(事件、x、y、标志、参数):
全局ix,iy,绘图
如果event==cv.event\u LBUTTONDOWN:
绘图=真
ix,iy=x,y
elif event==cv.event\u LBUTTONUP:
绘图=错误
等速矩形(img,(ix,iy),(x,y),(0255,0),5)
img=cv.imread('27BR1.jpg',-1)
cv.namedWindow('图像')
cv.setMouseCallback('图像',绘图记录)
而(一):
简历imshow('图像',img)
k=cv.waitKey(1)和0xFF
如果k==27:
打破
cv.destroyAllWindows()

如果我能帮忙的话,试着画4条线,而不是画一个矩形:),如果你认为这个答案解决了你的问题,你可以接受它作为答案。将来,有同样问题的人将从答案中受益。