Nanopc T4 使用OpenCV

识别长方形:

python 复制代码
import cv2
import cv2 as cv
import time
import platform
import os

# 获取操作系统类型
os_type = platform.system()
if os_type == "Windows":
    # Windows系统
    cap = cv.VideoCapture(0)  # 使用第零个摄像头
elif os_type == "Linux":
    # Linux系统
    cap = cv.VideoCapture(10)  # 使用第十个摄像头
    if not cap.isOpened():
        print("Cannot capture from camera. Exiting.")
        os._exit(1)  # 退出程序
last_time = time.time()




while (True):
    ret, frame = cap.read()
    imgContour = frame.copy()

    imgCanny = cv2.Canny(frame, 60, 60)  # Canny算子边缘检测
    contours, hierarchy = cv2.findContours(imgCanny, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)  # 寻找轮廓点
    for obj in contours:
        area = cv2.contourArea(obj)  # 计算轮廓内区域的面积
        # cv2.drawContours(imgContour, obj, -1, (255, 0, 0), 4)  # 绘制轮廓线
        perimeter = cv2.arcLength(obj, True)  # 计算轮廓周长
        approx = cv2.approxPolyDP(obj, 0.02 * perimeter, True)  # 获取轮廓角点坐标
        CornerNum = len(approx)  # 轮廓角点的数量
        x, y, w, h = cv2.boundingRect(approx)  # 获取坐标值和宽度、高度

        if CornerNum == 4:
            if 90 < w != h > 50:
                objType = "ChangFangXing"
                cv2.rectangle(imgContour, (x, y), (x + w, y + h), (0, 0, 255), 2)  # 绘制边界框
                cv2.putText(imgContour, objType, (x + (w // 2), y + (h // 2)), cv2.FONT_HERSHEY_COMPLEX, 0.6, (0, 0, 0),
                            1)  # 绘制文字

    cv2.imshow("shape Detection", imgContour)

    if cv.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv.destroyAllWindows()

识别人脸1:

python 复制代码
import cv2
import cv2 as cv
import time
import platform
import os

# 获取操作系统类型
os_type = platform.system()
if os_type == "Windows":
    # Windows系统
    cap = cv.VideoCapture(0)  # 使用第零个摄像头
elif os_type == "Linux":
    # Linux系统
    cap = cv.VideoCapture(10)  # 使用第十个摄像头
    if not cap.isOpened():
        print("Cannot capture from camera. Exiting.")
        os._exit(1)  # 退出程序
last_time = time.time()

img = cv.imread("D:\WorkSpace\Python\qsc.png")


def template_matching(img_match, img, arithmetic_model):
    '''
     【作用】
      进行图片模板匹配
     【参数1】
      模板图片
     【参数2】
      进行匹配的图片
     【参数3】
      算法模型
     【返回】
      无
    '''

    # 进行模板匹配
    result = cv.matchTemplate(img, img_match, arithmetic_model)

    # 获取最小最大匹配值,还有对应的坐标
    min_value, max_value, min_coordinate, max_coordinate = cv.minMaxLoc(result)

    # 默认最佳最大值,当算法为CV_TM_SQDIFF或CV_TM_SQDIFF_NORMED时改为最小值
    best_coordinate = max_coordinate
    if arithmetic_model == cv.TM_SQDIFF or arithmetic_model == cv.TM_SQDIFF_NORMED:
        best_coordinate = min_coordinate

    # 获取匹配图片的高和宽
    m_height, m_width = img_match.shape[:2]

    # 矩形的起始点和结束点
    r_start = best_coordinate
    r_end = (best_coordinate[0] + m_width, best_coordinate[1] + m_height);

    # 矩形的颜色和线的宽度
    r_color = (0, 100, 40)
    r_line_width = 2

    # 绘制矩形并展示
    cv.rectangle(img, r_start, r_end, r_color, r_line_width)
    cv.imshow("Qu ShiChao", img)


while (True):
    ret, frame = cap.read()

    template_matching(img, frame, cv.TM_SQDIFF)

    if cv.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv.destroyAllWindows()

通模型识别人脸

python 复制代码
import cv2
import cv2 as cv
import time
import platform
import os

# 获取操作系统类型
os_type = platform.system()
if os_type == "Windows":
    # Windows系统
    cap = cv.VideoCapture(0)  # 使用第零个摄像头
elif os_type == "Linux":
    # Linux系统
    cap = cv.VideoCapture(10)  # 使用第十个摄像头
    if not cap.isOpened():
        print("Cannot capture from camera. Exiting.")
        os._exit(1)  # 退出程序
last_time = time.time()

while (True):
    ret, frame = cap.read()

    # 这里是你的xml存放路径
    face_cascade = cv2.CascadeClassifier("D:\WorkSpace\Python\lbpcascade_frontalface.xml")
    # 开始人脸检测
    faces = face_cascade.detectMultiScale(frame, scaleFactor=1.03, minNeighbors=6)
    # 先复制一张图片
    frame1 = frame.copy()
    # 在检测到的人脸中操作
    for x, y, w, h in faces:
        # 画出人脸框
        frame1 = cv2.rectangle(frame1, (x, y), (x + w, y + h), (0, 255, 0), 2)
        # 找出人脸区域
        face_area = frame1[y:y + h, x:x + w]
    # 在人脸区域检测人眼

    cv2.imshow('face', frame1)


    if cv.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv.destroyAllWindows()
相关推荐
麻雀无能为力29 分钟前
CAU数据挖掘实验 表分析数据插件
人工智能·数据挖掘·中国农业大学
时序之心33 分钟前
时空数据挖掘五大革新方向详解篇!
人工智能·数据挖掘·论文·时间序列
.30-06Springfield1 小时前
人工智能概念之七:集成学习思想(Bagging、Boosting、Stacking)
人工智能·算法·机器学习·集成学习
说私域2 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的超级文化符号构建路径研究
人工智能·小程序·开源
永洪科技2 小时前
永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
大数据·人工智能·科技·数据分析·数据可视化·bi
shangyingying_12 小时前
关于小波降噪、小波增强、小波去雾的原理区分
人工智能·深度学习·计算机视觉
书玮嘎3 小时前
【WIP】【VLA&VLM——InternVL系列】
人工智能·深度学习
猫头虎4 小时前
猫头虎 AI工具分享:一个网页抓取、结构化数据提取、网页爬取、浏览器自动化操作工具:Hyperbrowser MCP
运维·人工智能·gpt·开源·自动化·文心一言·ai编程
要努力啊啊啊4 小时前
YOLOv2 正负样本分配机制详解
人工智能·深度学习·yolo·计算机视觉·目标跟踪