Jetson Nano笔记


硬件平台:Jetson Nano
操作系统:Ubuntu 18.04


烧写系统:

安装时设置了十几个分区,造成Windows无法识别磁盘必须先用分区助手删除所有分区


摄像头调用:

def gstreamer_pipeline(
    capture_width=1280,
    capture_height=720,
    display_width=1280,
    display_height=720,
    framerate=60,
    flip_method=0,
):
    return (
        "nvarguscamerasrc ! "
        "video/x-raw(memory:NVMM), "
        "width=(int)%d, height=(int)%d, "
        "format=(string)NV12, framerate=(fraction)%d/1 ! "
        "nvvidconv flip-method=%d ! "
        "video/x-raw, width=(int)%d, height=(int)%d, format=(string)BGRx ! "
        "videoconvert ! "
        "video/x-raw, format=(string)BGR ! appsink"
        % (
            capture_width,
            capture_height,
            framerate,
            flip_method,
            display_width,
            display_height,
        )
    )

# 调用摄像头 
cap = cv2.VideoCapture(gstreamer_pipeline(flip_method=0), cv2.CAP_GSTREAMER)

或者直接调用:

cap = cv2.VideoCapture("nvarguscamerasrc ! \
        video/x-raw(memory:NVMM), \
        width=(int)640, \
        height=(int)480, \
        format=(string)NV12, \
        framerate=(fraction)60/1 ! \
        nvvidconv flip-method=0 ! \
        video/x-raw, \
        width=(int)640, \
        height=(int)480, \
        format=(string)BGRx ! \
        videoconvert ! \
        video/x-raw, \
        format=(string)BGR ! \
        appsink",\
        cv2.CAP_GSTREAMER)

- 阅读全文 -

AI视觉处理--常用的滤波操作


平均滤波: blur 获取内核区域下所有像素的平均值,并替换中心元素。

dst = cv2.blur(img, (5,5))

中值滤波: medianBlur 去除干扰点、椒盐噪声(雪花点)

# 源图像,滤波核
dst = cv2.medianBlur(img,5)

高斯平滑滤波: 中心位置权值较大,对于从图像中去除高斯噪声非常有效。

# 源图像,滤波核,标准偏差
dst = cv2.GaussianBlur(img,(5,5),0)

Sobel图像边缘检测:
水平求导得出纵向边缘,竖向求导得出水平边缘
检测双边缘时,不能同时求导,需要分别求导后,再进行叠加。

拉普拉斯边缘检测
角点检测
查找轮廓
形态学腐蚀/膨胀
开操作/闭操作

计算轮廓

- 阅读全文 -

Python笔记--鼠标事件


# -*- coding: utf-8 -*-
"""
@author: Alex.Duan
"""
import cv2
import numpy as np

# 查看被支持的鼠标事件
#events=[i for i in dir(cv2) if 'EVENT'in i]
#print(events)

def mouse_events(event,x,y,flags,param):
    print(event)
    # 左键单击事件
    if(event==cv2.EVENT_LBUTTONDOWN):
        cv2.circle(img,(x,y),10,(255,0,0),-1)
    elif event==cv2.EVENT_RBUTTONDOWN:
        cv2.circle(img,(x,y),10,(0,255,0),-1)

#--------------------------------------------
# 创建图像与窗口并将窗口与回调函数绑定
img=np.zeros((512,512,3),np.uint8)
cv2.namedWindow('mouse')

# 注册鼠标回调函数
cv2.setMouseCallback('image',mouse_events)

while(1):
    cv2.imshow('mouse',img)
    if cv2.waitKey(20)&0xFF==27:
        break
        
cv2.destroyAllWindows()

- 阅读全文 -

Python笔记--图像处理


#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import cv2
import numpy as np

img = cv2.imread('test.jpg')

print("shape",img.shape)
print("size",img.size)
print("dtype", img.dtype)

# y0,y1,x0,x1
ball=img[500:580,330:390]
img[0:80,740:800]=ball

cv2.imshow("img",img)
while True:
    if cv2.waitKey(20) == 27 :
        break


#px = img[100]
#print(px)
#blue = img[100,100,0]

- 阅读全文 -

Python笔记--绘图


import numpy as np
import cv2
# 创建黑色背景
img=np.zeros((512,512,3), np.uint8)
# 画一条宽度为5px的蓝色对角线(起点,终点,颜色BGR,线宽)
cv2.line(img,(0,0),(511,511),(255,0,0),5)
# 画矩形(左上/右下(可互换),颜色,线宽)
cv2.rectangle(img,(510,128),(384,0),(0,255,0),1)
# 画圆(圆心位置,半径,颜色,线宽)
# 线宽单位为像素,-1表是实心铺满
cv2.circle(img,(256,256), 100, (0,0,255), 3)

# 画椭圆
# 圆心位置
# 长轴长度,短轴长度
# 旋转角度:顺时针
# 扇形角度:顺时针,0,360表示整圆
# 颜色
# 线宽
# 半径,起始角度,终点角度,颜色,线宽)
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,3)

# 画多边形,依次连接各点
# 注意引用时的括号[]
# True 表示最后闭合曲线
# 
pts=np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
#pts=pts.reshape((-1,1,2))
cv2.polylines(img, [pts], True, (255, 0, 255), 1)

# 添加文字
# 起始位置(左下角),字体,大小,颜色,线宽
cv2.putText(img,'HelloWorld',(0,400), cv2.FONT_HERSHEY_SIMPLEX, 2,(255,255,255),1)

winname = 'example'
cv2.namedWindow(winname)
cv2.imshow(winname, img)
cv2.waitKey(0)
cv2.destroyWindow(winname)

- 阅读全文 -


Copyright©2025 春天花会开, All Rights Reserved. Email: webmaster@oroct.com