Python 多处理模块OpenCV应用程序(空白相机馈送)
我尝试使用多处理模块基于Pygame和OpenCV并发运行两个函数 然而,我目前面临一些有关OpenCV方面的问题 代码如下:Python 多处理模块OpenCV应用程序(空白相机馈送),python,opencv,python-multiprocessing,Python,Opencv,Python Multiprocessing,我尝试使用多处理模块基于Pygame和OpenCV并发运行两个函数 然而,我目前面临一些有关OpenCV方面的问题 代码如下: import cv2 import numpy as np import multiprocessing cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) cordeX, cordeY = 0, 0 font = cv2.FONT_HERSHEY_SIMPLEX def pointCoordenates(frame):
import cv2
import numpy as np
import multiprocessing
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
cordeX, cordeY = 0, 0
font = cv2.FONT_HERSHEY_SIMPLEX
def pointCoordenates(frame):
global cordeX, cordeY
azulBajo = np.array([100, 100, 20])
azulAlto = np.array([125, 255, 255])
frameHSV = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(frameHSV, azulBajo, azulAlto)
contornos, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contor in contornos:
area = cv2.contourArea(contor)
if area > 800:
centros = cv2.moments(contor)
if (centros["m00"] == 0): centros["m00"] = 1
x = int(centros["m10"] / centros["m00"])
y = int(centros["m01"] / centros["m00"])
cordeX = x
cordeY = y
cv2.circle(frame, (x, y), 7, (0, 255, 0), -1) # 7 es el radio del circulo
cv2.putText(frame, '{},{}'.format(x, y), (x + 10, y), font, 0.75, (0, 255, 0), 1, cv2.LINE_AA)
contorSuavi = cv2.convexHull(contor)
cv2.drawContours(frame, [contorSuavi], 0, (255, 0, 0), 3)
global car_x_change
def openCamera():
while (cap.isOpened()):
ret, frame = cap.read()
frame = cv2.flip(frame, 1)
if ret == True:
cv2.rectangle(frame, (300,300), (400,400), (0,0,255), thickness=2)
cv2.rectangle(frame, (100,150), (200,250), (0,0,255), thickness=2)
cv2.rectangle(frame, (500,20), (600,120), (0,0,255), thickness=2)
pointCoordenates(frame)
if (cordeX > 300 and cordeX < 400 and cordeY > 300 and cordeY <400):
cv2.rectangle(frame, (300,300), (400,400), (0,255,0), thickness=2)
if (cordeX > 100 and cordeX < 200 and cordeY > 150 and cordeY <250):
cv2.rectangle(frame, (100,150), (200,250), (0,255,0), thickness=2)
if (cordeX > 500 and cordeX < 600 and cordeY > 20 and cordeY <120):
cv2.rectangle(frame, (500,20), (600,120), (0,255,0), thickness=2)
cv2.imshow('Interactive Game', frame)
if cv2.waitKey(1) & 0xFF == ord('r'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == '__main__': #To resolve freeze_support() Runtime Error
multipcamera = multiprocessing.Process(target=openCamera)
multipcamera.start()
导入cv2
将numpy作为np导入
导入多处理
cap=cv2.VideoCapture(0,cv2.cap_DSHOW)
cordeX,cordeY=0,0
font=cv2.font\u HERSHEY\u SIMPLEX
定义点坐标(帧):
全球cordeX,cordeY
azulBajo=np.array([10010020])
azulAlto=np.array([125255255])
frameHSV=cv2.CVT颜色(frame,cv2.COLOR_BGR2HSV)
遮罩=cv2.inRange(框架HSV、azulBajo、azulAlto)
contornos,u=cv2.findContours(遮罩,cv2.RETR\u外部,cv2.链近似\u简单)
对于contornos中的contor:
面积=cv2。轮廓面积(续)
如果面积>800:
centros=cv2.力矩(续)
如果(中心[“m00”]=0):中心[“m00”]=1
x=int(centros[“m10”]/centros[“m00”])
y=int(centros[“m01”]/centros[“m00”])
cordeX=x
科迪=y
cv2.圆(帧,(x,y),7,(0,255,0),-1)#7 es el radio del circulo
putText(框架,{},{})。格式(x,y),(x+10,y),字体,0.75,(0,255,0),1,cv2.LINE_AA)
contorSuavi=cv2.CONVERXHULL(contor)
cv2.绘制等高线(帧[contorSuavi],0,(255,0,0),3)
全球汽车变化
def openCamera():
while(cap.isOpened()):
ret,frame=cap.read()
帧=cv2。翻转(帧,1)
如果ret==True:
cv2.矩形(框架,(300300),(400400),(0,0255),厚度=2)
cv2.矩形(框架,(100150),(200250),(0,0255),厚度=2)
cv2.矩形(框架,(500,20),(600120),(0,0255),厚度=2)
点坐标(帧)
如果(cordeX>300,cordeX<400,cordeY>300,cordeY 100,cordeX<200,cordeY>150,cordeY 500,cordeX<600,cordeY>20,cordeY