dai3372757 2019-03-24 05:24 采纳率: 0%
浏览 1817
已结题

Jetson TX2 GPU占用不正常

我并没有在程序中使用GPU运算(大概?),但是GPU占用非常高,请问各位大佬指点迷津。。。

代码是实际运算的部分

#!/usr/bin/env python

import sys
import time
import numpy as np
import cv2


ROIPt = []
cropping = False
flag=0

def mouse_choose(event, x, y, flags, param):

        global ROIPt, cropping, flag

        if event == cv2.EVENT_LBUTTONDOWN:
                ROIPt = [(x, y)]
                cropping = True

        elif event == cv2.EVENT_LBUTTONUP:

                ROIPt.append((x, y))
                cropping = False


                cv2.rectangle(frame, ROIPt[0], ROIPt[1], (0, 255, 0), 1)
                cv2.imshow("frame", frame)
                flag=1

cap = cv2.VideoCapture("nvcamerasrc ! video/x-raw(memory:NVMM), width=(int)1280, height=(int)720,format=(string)I420, framerate=(fraction)24/1 ! nvvidconv flip-method=2 ! video/x-raw, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink")

if not cap.isOpened():
    print("not capture")
    exit()

ret,frame = cap.read()
cv2.namedWindow('frame')
cv2.setMouseCallback("frame", mouse_choose)

while 1:
    while ret:
        start = time.time()
        cv2.imshow('frame',frame)
        end = time.time()
        print("imshow:",end-start)
        start = time.time()
        ret,frame = cap.read()
        end = time.time()
        print("load_matrix:",end-start)
        key = cv2.waitKey(1) & 0xFF

        if flag==1:
                break


    if len(ROIPt) == 2:
        roi = frame[ROIPt[0][1]:ROIPt[1][1], ROIPt[0][0]:ROIPt[1][0]]
        cv2.imshow("ROI", roi)
        start = time.time()
        roi_gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
        end = time.time()
        print("roi_gray:",end-start)
        start = time.time()
        sobel_x=cv2.Sobel(roi_gray,-1,1,0,ksize=3)
        end = time.time()
        print("Sobel 1:",end-start)
        start = time.time()
        sobel_y=cv2.Sobel(roi_gray,-1,0,1,ksize=3)
        end = time.time()
        print("Sobel 2:",end-start)
        start = time.time()
        sobel_result = cv2.addWeighted(sobel_x,1,sobel_y,1,0)
        end = time.time()
        print("add two matrix:",end-start)
        start = time.time()
        _,threshold_result=cv2.threshold(sobel_result,50,255,cv2.THRESH_TOZERO);
        end = time.time()
        print("threshold:",end-start)

        start = time.time()
        sobel_value=cv2.sumElems(threshold_result)
        end = time.time()
        print("sum the whole matrix:",end-start)
        start = time.time()
        output_value=sobel_value[0]//10000
        end = time.time()
        print("division:",end-start)

        print(output_value)
cap.release()
cv2.destroyAllWindows()


v
如果用鼠标在视频上选择了700x700大小的区域进行运算GPU占用达到60~70
图片说明

这是相关运算进行的时间
图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-03-24 09:09
    关注

    正常的,opencv调用gpu编码,就是有比较大的负载。和你视频分辨率高低数据量无关。

    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程