codecamp

使用OpenCV识别图像色值

本章节为 如何利用OpenCV识别图片色值

-- 颜色操作部分开始
-- 读取名为 "zs.png" 的图像,并将其存储在变量 img 中
local img = imread("zs.png")          
-- 复制 img 图像,将副本存储在 img2 变量中
local img2 = cloneMat(img)             


-- 颜色空间转换部分
-- 将图像的颜色空间从 BGRA 转换为 RGB,55 代表 CV::COLOR_BGRA2RGB(在 cv 版本 460 中)
cvtColor(img, 55)                       
-- 再次进行颜色空间转换
-- 将图像的颜色空间从 BGR 转换为 HSV,40 代表 cv::COLOR_BGR2HSV
cvtColor(img, 40)


-- 颜色范围筛选部分
-- 对图像进行颜色范围筛选,筛选出 HSV 颜色值在指定范围内的像素
-- 这里的范围是:H 通道 140 - 150,S 通道 110 - 195,V 通道 150 - 255
inRange(img, 140,110,150,  150,195,255)


-- 形态学操作部分
-- 创建一个形态学核,核的形状为矩形(0 代表 MORPH_RECT),大小为 4x4
local kernel = getStructuringElement(0, 4,4) 
-- 对图像进行膨胀操作,使用前面创建的核
-- anchor 为 (-1, -1) 表示核的中心位置,迭代次数为 5 次
dilate(img, kernel, -1, -1, 5)  
-- 对图像进行二值化处理,阈值为 60,最大值为 255,二值化类型为 THRESH_BINARY(0)
threshold(img, 60, 255, 0)


-- 轮廓检测部分
-- 找出图像中的轮廓,检测模式为 RETR_EXTERNAL(0),轮廓近似方法为 CHAIN_APPROX_NONE(1)
local contours = findContours(img, 0, 1)


-- 处理检测到的轮廓
-- 假设已经调用 findContours 得到了 contours
-- contours[i] 是第 i 个轮廓 (table)
if #contours > 0 then
    -- 打印找到的轮廓数量
    print("找到轮廓数量:", #contours)
    -- 遍历所有检测到的轮廓
    for i, contour in ipairs(contours) do
        -- 计算当前轮廓的外接矩形
        local rect = boundingRect(contour)
        if rect then
            -- 打印外接矩形的位置和大小
            print("外接矩形:", rect.x, rect.y, rect.width, rect.height)
            -- 注释掉的代码,用于在 img2 图像上绘制外接矩形
            -- 矩形颜色为黄色(0, 255, 255),线宽为 1
            --drawRectangle(img2, rect.x, rect.y, rect.width, rect.height, 0,255,255, 1)
        end
    end
end
-- 注释掉的代码,用于显示 img2 图像在名为 "myWindow" 的窗口中
--imshow("myWindow", img2)
-- 注释掉的代码,等待用户按键,参数 0 表示无限等待
--waitKey(0)
调用封装的摄像头
调用摄像头使用Yolo识别物品
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

设备声明

训练工具使用教程

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }