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()
相关推荐
井底哇哇35 分钟前
ChatGPT是强人工智能吗?
人工智能·chatgpt
Coovally AI模型快速验证39 分钟前
MMYOLO:打破单一模式限制,多模态目标检测的革命性突破!
人工智能·算法·yolo·目标检测·机器学习·计算机视觉·目标跟踪
AI浩1 小时前
【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因
人工智能·深度学习·计算机视觉·transformer
可为测控1 小时前
图像处理基础(4):高斯滤波器详解
人工智能·算法·计算机视觉
一水鉴天2 小时前
为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
开发语言·人工智能·python
倔强的石头1062 小时前
解锁辅助驾驶新境界:基于昇腾 AI 异构计算架构 CANN 的应用探秘
人工智能·架构
佛州小李哥3 小时前
Agent群舞,在亚马逊云科技搭建数字营销多代理(Multi-Agent)(下篇)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
说私域3 小时前
社群裂变+2+1链动新纪元:S2B2C小程序如何重塑企业客户管理版图?
大数据·人工智能·小程序·开源
程序猿阿伟3 小时前
《探秘鸿蒙Next:如何保障AI模型轻量化后多设备协同功能一致》
人工智能·华为·harmonyos
2401_897579654 小时前
AI赋能Flutter开发:ScriptEcho助你高效构建跨端应用
前端·人工智能·flutter