Skip to content

AidCV Python 接口文档

创建窗口 namedWindow

namedWindow(winname, flags = 0, size = None, port = None) -> None
窗口绑定的窗口名,不可重复。
窗口属性,无效参数,是对 OpenCV 的兼容性遗留。
窗口尺寸,第一位为宽,第二位为高,形如 [width, height]。
使用的端口号,默认或传入不可使用的端口号时会使用随机端口。
None

使用指定端口 port 或随机端口构建一个 web 页面,同时在 Web 桌面 中创建一个窗口指向该页面。该 web 页面与 winname 绑定,基于该 winname,开发者可使用其他 api 影响这个 web 页面。当存在多个打开的 Web 桌面 时,每个 Web 桌面 均会弹出该窗口。

注意: 与 OpenCV 不同,在 Web 桌面 中创建的窗口无法自由调整其大小,如果开发者想控制窗口的大小使其与图像匹配,请在使用此 api 时显示传入 size 参数。

使用例

python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

cv2.namedWindow("win0")

cv2.namedWindow("win1", cv2.WINDOW_AUTOSIZE)

cv2.namedWindow("win2", size = (640,480))

cv2.namedWindow("win3", cv2.WINDOW_AUTOSIZEsize = (640,480))

注册鼠标回调函数 setMouseCallback

setMouseCallback(winname, onMouse, userdata = 0) -> None
目标窗口绑定的窗口名。
回调函数,该函数将在鼠标点击目标窗口时被调用。回调函数需遵循该格式: call_back(event, x, y, flags, param)。其中 event 为触发的鼠标事件类型对应的常量,与 OpenCV 的定义一致。x,y 为鼠标的点击位置。flags为鼠标事件标志的常量,无效参数,是对 OpenCV 的兼容性遗留。param 为开发者传入的参数,即函数 setMouseCallback 的第三个参数。
传递给回调函数的可选参数,开发者自定义的外部数据。
None
为指定的窗口设置鼠标回调函数,目前仅对鼠标的点击事件进行响应。

使用例

python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

import time

def call_back(event, x, y, flags, params):
    print(event,x,y,params)

cv2.namedWindow("win")
cv2.setMouseCallback("win", call_back)
time.sleep(10)

等待按键事件 waitKey

waitKey(delay = 0) -> int or str
超时时间,单位为毫秒,其值小于或等于 0 时将永久等待按键事件。
int类型或str类型的常量,为捕获到按键的 ascii 码或按键名。
捕获键盘的下一次按键事件。

使用例

python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

cv2.namedWindow("aa")
res = cv2.waitKey(10)
print(res)

显示图形 imshow

imshow(winname, frame, port = None) -> None
目标窗口绑定的窗口名。若目标窗口不存在,则会自动调用namedWindow(winname, size = (frame.shape[1], frame.shape[0]), port = port) 创建窗口。
待显示的图形数据,通常而言,传入 BGR 色彩的图形数据,以 RGB 色彩进行显示。
None

在目标窗口中显示指定的图形。

使用例

python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2
import time

frame = cv2.imread("test.jpg")

cv2.namedWindow("win0")

cv2.imshow("win0", frame)
cv2.imshow("win1", frame)

time.sleep(5)

销毁窗口 destroyWindow

destroyWindow(winname) -> None
目标窗口绑定的窗口名。
None

销毁并关闭名称为 winname 的窗口。

使用例

python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2
import time

cv2.namedWindow("win0")
cv2.namedWindow("win1")

time.sleep(3)
cv2.destroyWindow("win0")
time.sleep(5)

销毁全部窗口 destroyAllWindows

destroyAllWindows() -> None
None

销毁并关闭当前进程开启的全部窗口。

使用例

python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2
import time

cv2.namedWindow("win0")
cv2.namedWindow("win1")

time.sleep(3)
cv2.destroyAllWindows()
time.sleep(5)

类 VideoCapture

VideoCapture 类用于从摄像头或视频文件中捕获视频帧,支持 usb 相机与 mipi 相机,由于底层限制,暂时不支持同时打开多个 mipi 相机。在不使用扩展参数的情况下,与 cv2.VideoCapture 一致,使用扩展参数初始化 VideoCapture 对象会重载为 AidCV 扩展的 VideoCapture。

初始化

VideoCapture 类有两种初始化方式。

VideoCapture()
一个完成了初始化的 VideoCapture 实例。
VideoCapture(filename, apiPreference = 0, device = "usb")
视频文件名,usb相机节点名,或mipi相机 索引(0 为前置相机,1 为后置相机)。
选择可用后端,无效参数,是对 OpenCV 的兼容性遗留。
相机类型,可用值为 "usb", "mipi"。
一个完成了初始化同时打开指定设备或文件的 VideoCapture 实例。
使用例
python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

cap = cv2.VideoCapture()

file_cap = cv2.VideoCapture("/home/aidlux/test.mp4")

usb_cap = cv2.VideoCapture("/dev/video2")

mipi_cap = cv2.VideoCapture(0, device = "mipi")

成员函数

VideoCapture().open(filename, apiPreference = 0) -> None
视频文件名,usb相机节点名,或mipi相机 索引(0 为前置相机,1 为后置相机)。
选择可用后端,无效参数,是对 OpenCV 的兼容性遗留。
None

打开相机或文件。

使用例
python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

cap = cv2.VideoCapture()
cap.open("/dev/video2")
VideoCapture().isOpened() -> bool
bool类型的常量,表示当前相机是否已经成功打开。
打开对应设备或文件, 若 VideoCapture 实例已打开相机,该函数不会进行任何操作。
使用例
python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

cap = cv2.VideoCapture("/dev/video2")

print(cap.isOpened())
VideoCapture().read() -> (bool, numpy.array)
(ret, frame)
ret: bool类型的常量,获取成功或失败。
frame: numpy数组,获取到的视频帧。
从已打开设备或文件中捕获图像帧。
使用例
python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

cap = cv2.VideoCapture("/dev/video2")

ret, frame = cap.read()
if ret:
  print(frame.shape)
VideoCapture().get(propId) -> float
参数索引,最大值为18。索引对应参数与 OpenCV 保持一致。 由于底层实现问题,在 device="mipi" 时,目前仅 3: 宽,4: 高,5: 帧率有效。
常量,表示对应参数的值。
获取相机默认参数。
使用例
python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

cap = cv2.VideoCapture("/dev/video2")
print(cap.get(3), cap.get(4))
VideoCapture().set(propId, value) -> bool
参数索引,最大值为18。索引对应参数与 OpenCV 保持一致。由于底层实现问题,在 device="mipi" 时,目前仅 3: 宽,4: 高,5: 帧率有效。
对应参数待设置的值。
bool类型的常量,表示参数设置是否成功。bool类型的常量,表示参数设置是否成功。
设置相机指定参数, 待指定的参数与参数值需要在相机允许的范围内。
使用例
python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

cap = cv2.VideoCapture("/dev/video2")
cap.set(3, 1920)
cap.set(4, 1080)
cap.set(5, 30)
ret, frame = cap.read()
print(frame.shape)
VideoCapture().release()
None
释放该 VidoCapture 实例打开的相机。
使用例
python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

cap = cv2.VideoCapture("/dev/video2")

cap.release()

数学计算 sigmoid

sigmoid(x) -> numpy.array
sigmoid 函数的自变量。
numpy.array类型的常量,与参数 x 的shape相同,为参数 x 经过 sigmoid 函数计算后的值。

使用例

python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

x = np.array(range(8)).reshape(2,2,2)
print(cv2.sigmoid(x))

数学计算 softmax

softmax(x, axis = 0) -> numpy.array
softmax 函数的自变量。
在指定的轴上进行计算。
numpy.array类型的常量,与参数 x 的shape相同,为参数 x 在指定轴 axis 上经过 softmax 函数计算后的值。
#### 使用例
python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2

x = np.array(range(8)).reshape(2,2,2)
print(cv2.softmax(x, axis = 2))

生成彩色掩膜 colormask

colormask(mask, color) -> list
二维或三维掩膜,二维掩膜应为 int 类型,三维掩膜应为 float 类型。
映射的颜色列表,每个颜色由 (r,g,b) 三维组成。
[color_mask] 或 [color_mask,...]
[color_mask]: 二维掩膜返回一张 彩色掩膜,标定各个位置属于哪一类。
[color_mask,...]: 三维掩膜返回一个 彩色掩膜组成的列表,分别标定各个位置是否属于该类。
使用 color 将二维或三维掩膜 mask 映射为彩色图像。映射过程遵循以下逻辑: 对于 二维掩膜,mask 各个位置的值的类型为 int, 即 0,1,2,...。不同的值被视为不同的类,不同的类映射为不同的颜色。 对于 三维掩膜,第三维 视为不同的类,前二维各个位置的值视为该位置属于某个类的概率,不同类映射为不同的颜色。

使用例

python
try: # aidcv-sdk>=1.0.4
    import aidcv as cv2
except:
    import cv2
import numpy as np

mask = np.array([[1, -1, 0], [2, 0, -2], [0, 3, -3]])[None]
colors = [(0,255,255)]
res = cv2.colormask(mask, colors)[0]
print(mask)
res = cv2.resize(res, (500,500), interpolation = cv2.INTER_NEAREST)
cv2.namedWindow("win0")
cv2.imshow("win0", res)
cv2.waitKey(3000)
print("next example")

mask = np.array([[1, 3, 0], [2, 0, 0], [0, 3, 0]])
colors = [(0,255,255),(255,0,0),(0,255,0),(0,0,255)]
res = cv2.colormask(mask, colors)[0]
print(mask)
res = cv2.resize(res, (500,500), interpolation = cv2.INTER_NEAREST)
cv2.imshow("win0", res)
cv2.waitKey(3000)
print("over")