打开摄像头显示:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import cv2
 
 # 打开摄像机:参数表示为摄像机编号
cap = cv2.VideoCapture(0)
# 设置视频参数:640x480
cap.set(3,640)
cap.set(4,480) 

while(True):
    # 从摄像机读入一帧图像
    ret, frame = cap.read()
    cv2.imshow('Title', frame)
   
    # 必须调用waitKey才能刷新显示(单位为ms)
    k = cv2.waitKey(10) & 0xff
    # 按下ESC退出程序
    if k == 27: 
        break
        
# 关闭摄像机        
cap.release()
cv2.destroyAllWindows()

指定显示器显示

DISPLAY=:0 python3 camara.py

图片显示:

img = cv2.imread('test.jpg')
cv2.imshow('image',img)
cv2.waitKey(0)

# 以灰度模式读入
gray = cv2.imgread("16.jpg",cv2.IMREAD_GRAYSCALE)

保存图片:

# 根据扩展名转换为对应格式
cv2.imwrite("123.png",img)

图像翻转:

# 图像翻转: 
# 0 - 上下翻转,
# 1 - 左右翻转, 
#-1 - 上下左右翻转
frame = cv2.flip(frame, 1) 

sudo LD_PRELOAD=/usr/lib/uv4l/uv4lext/armv6l/libuv4lext.so uv4l -v7 -f --sched-rr --mem-lock --auto-video_nr --driverraspicam --encoding mjpeg --width 640 --height 480 --framerate15

参考文档:http://www.linux-projects.org/uv4l/installation/


常用库说明:
采用 pip3 install 命令安装
matplotlib - 绘图

-i 用于指定临时源



运行报错:

ImportError: /usr/local/lib/python3.7/dist-packages/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8

指定LD_PRELOAD环境变量

LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 python3 camra.py

或者导出环境变量

export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1

运行报错:

ASSERT: "false" in file qasciikey.cpp, line 501

原因分析: MobaXterm的锅

取消Settings-->Configuration-->X11-->Unix-compatible keyboard选项,并重启MobaXterm即可。