做这个网站的是天才,他让我在家疯狂做菜。

不知道差友们有没有遇到过这种情况。

心血来潮想做饭,买了一堆菜,但是做完一顿还剩了不少。剩下的菜单独做一顿肯定不够,然后只能再买菜、再剩菜。。。

最后冰箱里塞满了八杆子打不着的食材,不知道怎么利用,放着放着就变质了。

如果你也苦恼于这种事,不想浪费,世超今天推荐个网站。

图片

暂且就叫它“ 剩菜小助手 ”吧。

图片

先说说这个网站的来源,是 B 站 UP 云游君在疫情期间做的。

当时因为大家能拿到的菜都比较随机,所以每天不知道做啥,于是云游君就搓了这么个网站出来,菜谱也全来自 B 站美食区 UP 的攻略视频。

到现在,虽然食材不缺了,但是这网站用来处理剩菜,或单纯地给不知道吃什么的你一个参考,也是相当好使的。所以动不动就会小火一下,上个热搜。

临近年关,也许你正需要个菜谱推荐。

那废话不多说,下面世超就来演示一下。

图片

首先,网站主页贼简单,打开就能看到一堆带 Emoji 的食材。

食材选项共有四个分类,一个是蔬菜,一个是肉类。

最后两类,是可选可不选的主食和厨具。

图片

而只要选好自己手头有的食材,这个网站就会根据你的选择,自动组合生成食谱。

比如世超根据自己冰箱里的情况,选了个番茄、芹菜、猪肉。

然后网站立马就出现了几十道菜谱推荐。

图片

随便找一道心仪的菜点进去,就会跳转到 B 站的做菜教程。

这网站推荐的视频大多实用又好操作,教做菜的 UP 主含金量也很在线。

比如老饭骨、美食强、品诺美食等,都是世超平时也总学习的厨师 UP。

图片

作者还在后台贴出了菜谱数据库和来源,不知道他是亲自严选过 UP,还是根据点赞投币比例爬虫出来的数据。

总之,推荐的视频都很有用,常常会学到很多新东西。

对在家做饭的小白来说,这都是些不错的参考,可比我自己翻视频找菜谱效率多了。

图片

图片

而上面演示的,是这个菜谱默认的“ 模糊匹配 ”模式,虽然结果很多,但显示结果不会很准确。

不过,也有严格按照你所选食材组合出来的“ 严格匹配 ”模式。

这个模式,对冰箱里食材种类乱七八糟的差友来说,可能就是救星了。

依然是番茄+芹菜+猪肉的组合,这次直接搜出来一个番茄肉酱。

图片

不得不说,就世超这厨房经验,是根本想不起来番茄芹菜肉能全混在一起,做肉酱的。

图片

根据网站推荐的视频,我觉得我基本能在不翻车的情况下,把现有食材利用最大化。

主要是做出来这个确实也挺诱人,拌点面条米饭,晚饭就有着落了。

图片

经过实验,大半部分菜都能匹配出结果。

就算是看起来有些黑暗的食材组合,严格匹配下也总有惊喜。

比如这个茄子+虾的组合。

图片

搜索出来的虾肉茄子卷,直接冲破世超想象。

我是真没想到这俩东西加在一起,原来能看起来这么好吃。

图片

而且一些菜谱后面还有标注,比如“ 费手 ”,说明菜品难度大,轻易不建议尝试。

或是“ 开店级别 ”,用个电饭煲就能轻松做出媲美卤味店的菜。

这些标注也能进一步加强搜索精度,贴心省事。

要说缺点,也不是没有。

这个网站目前食材选项不多,豆类+蔬菜共 15 种,肉类 10 种,即便已经覆盖了日常生活的基本需求,也还是远远不够。

组合出来的菜谱,也不能保证 100% 存在。

严格匹配下,没有结果的情况常常出现。

图片

而且,因为搜索结果来源于 B 站 UP 主的频道,所以偶尔也会出现视频已删除的情况。

好在这种发生的概率不高,大多数都是能看的。

图片

在网站公布的建议表格中,能看到大伙对网站的各种建议。

作者也根据建议做了很多改动,但过去两年多的时间,更新节奏也放缓了。

这对于一个免费的开源小网站来说,已经算是难得。

毕竟功能再多的话都快赶上一个 APP 了,所以世超也不奢求太多了。

图片

图片

而对于要求更细的差友,世超觉得也可以试试微信“ 下厨房 ”小程序。

这个小程序的优势是食材更多,几乎是上面网站的 2-3 倍。

图片

同样一道菜,里面也有不少选择,可以看看哪个做法更适合自己。

图片

不过它的缺点也很明显,其中一个就是搜索结果不够智能。

比如选了蘑菇、牛肉,匹配出来的结果往往不能组合到一起,而是各做各做。

图片

而剩菜小助手网站,则能直接显示出口蘑牛肉粒等好几道菜。

图片

图片

还有一个, 就是下厨房小程序的菜谱几乎都是图文形式。

对比 B 站的视频来说,还是不够细致。

对于有一定厨艺功底的人来说还好,如果是纯小白,那门槛就有一点点高了。

图片

最后总结,剩菜小助手网站,能帮你发现各种新鲜的菜式组合,尽可能利用你冰箱里的剩菜。

如果你觉得不够用,那也可以用下厨房小程序辅助一手。

这样一来,世超觉得应该就能解决你 80% 的食材囤积问题了。

甚至,就算年前闭眼睛乱买一大堆菜,说不定也能凑齐一桌年夜饭,玩的就是开盲盒的刺激。

好了不说了,这文章写着写着就饿了,世超我先去整一包白象。

提前祝差友们新年快乐!

看我在网站里随机到的几道菜

你觉得做年夜饭够不够用

图片

图片

图片

图片

图片

图片

图片

小助手网址:

https://cook.yunyoujun.cn

本文转自:差评君

<think>好的,我现在需要帮助一个零基础的用户理解之前提供的OpenCV代码。用户已经明确表示自己没有任何基础,所以我必须从最基础的概念开始解释,避免使用专业术语,或者至少在使用时给出简单易懂的解释。 首先,我应该回顾之前的代码,看看每个部分都是什么的。代码分为几个主要步骤:导入库、读取图像、颜色空间转换、定义颜色范围、创建掩膜、形态学操作、查找轮廓、过滤和绘制结果,最后显示结果。对于零基础的用户来说,每个步骤都需要拆解,用简单的语言说明其作用和意义。 首先,导入库的部分。用户可能不知道什么是库,我需要解释一下,比如OpenCV是用来处理图像的,numpy是处理数组的数学库。但不要深入,点到为止即可。 然后读取图像,用户可能不知道imread的作用,需要说明这是将图片文件加载到程序中,变成计算机可以处理的数据。同时,复制原始图像的原因是为了保留原图,方便后续绘制结果而不影响原图。 颜色空间转换部分,用户可能对BGR和HSV不了解。需要简单说明BGR是OpenCV默认的颜色表示方式(类似于RGB),而HSV是将颜色分为色相、饱和度、明度的模型,更适合颜色识别,因为颜色信息集中在H通道,不受明暗影响太大。这里要避免过于技术性的解释,重点放在为什么用HSV而不是BGR。 定义颜色范围时,用户可能不知道lower和upper数组的作用,需要解释这是设定目标颜色的范围,比如蓝色的H值在100到140之间,S和V的范围则根据实际情况调整。可能需要举例说明如何确定这些值,比如用工具或代码获取特定颜色的HSV值。 创建掩膜的部分,用户可能完全不知道掩膜是什么。需要用比喻的方式,比如掩膜就像一个过滤器,只保留符合颜色范围的区域,其他区域变成黑色,这样后续处理就只关注这些区域。 形态学操作中的开运算,需要简单说明这是为了去除小的噪声点,比如图像中的一些小斑点,通过先腐蚀后膨胀的方式,让掩膜更干净。用户可能不知道腐蚀和膨胀的具体操作,可以简化为“清理杂点”的过程。 查找轮廓,用户可能不知道轮廓是什么,需要解释这是找到图像中连续的边缘,即色块的边界。findContours函数的作用就是找出这些边界点,形成轮廓。 过滤和绘制结果部分,用户需要理解为什么要过滤面积,比如小的区域可能是噪声,设定一个最小面积阈值来排除它们。绘制矩形框和轮廓是为了在原图上标记出色块的位置,方便观察。 最后显示结果,用imshow展示处理后的图像,waitKey和destroyAllWindows是OpenCV显示图像的标准流程,需要说明这些函数的作用。 在解释过程中,需要不断检查是否有专业术语,并用更简单的语言替代或解释。例如,解释“HSV”时,可以说“HSV是一种颜色表示方式,把颜色分为颜色种类、鲜艳程度和亮度,这样更容易识别特定颜色”。对于“掩膜”,可以说“掩膜就像是一个过滤器,只显示我们想要的颜色部分,其他部分隐藏起来”。 可能还需要提醒用户安装库的方法,以及运行代码时的注意事项,比如替换图片路径,调整颜色范围等。此外,用户可能不知道如何调试或调整参数,可以建议他们通过尝试不同的HSV值或面积阈值来优化结果。 另外,用户作为零基础,可能对代码的结构不熟悉,比如循环、条件判断等,需要简要说明for循环的作用是遍历所有找到的轮廓,并检查每个轮廓的面积是否符合要求。 总结来说,我需要将代码分解成每个步骤,用日常语言解释每个步骤的作用,并关联到实际生活中的例子,帮助用户建立直观的理解。同时,避免信息过载,每个部分点到为止,确保用户能够一步步跟进,逐步理解整个代码的逻辑和实现过程。</think>以下是为零基础学习者准备的分步代码解读,用最易懂的方式解释每个步骤: --- ### **1. 导入工具包(超市买食材)** ```python import cv2 # 图像处理工具,像Photoshop的代码版 import numpy as np # 数学计算工具,处理数字表格 ``` - **类比**:就像做菜前要先买好油盐酱醋,这里导入需要的代码工具包 --- ### **2. 读取图片(打开相册)** ```python image = cv2.imread('test.jpg') # 读取图片文件 original = image.copy() # 复制原图备用 ``` - **重点**: - `test.jpg` 替换成你的图片路径(比如:'D:/photo.jpg') - `original` 是备份,就像复印一份文件防止涂改时弄坏原稿 --- ### **3. 转换颜色模式(换滤镜)** ```python hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # 把图片转换成HSV颜色模式 ``` - **为什么转换**: - 原始颜色模式(BGR)像调色盘混在一起,HSV模式把颜色分成: - **H** 色相(什么颜色:红/蓝/绿) - **S** 饱和度(颜色有多鲜艳) - **V** 明度(颜色有多亮) - 这种模式更容易识别特定颜色 --- ### **4. 设置颜色范围(选色工具)** ```python # 示例:识别蓝色(H值范围100-140) lower = np.array([100, 50, 50]) # 最低颜色要求 upper = np.array([140, 255, 255]) # 最高颜色要求 ``` - **如何理解**: - 就像在PS中用吸管工具选颜色范围 - `[H最小值, S最小值, V最小值]` 到 `[H最大值, S最大值, V最大值]` - 调整技巧:先用手机取色器APP查看目标颜色的HSV值 --- ### **5. 创建颜色遮罩(剪窗花)** ```python mask = cv2.inRange(hsv, lower, upper) # 只保留在颜色范围内的区域 ``` - **效果**: - 符合颜色范围的区域显示为白色,其他区域为黑色 - 类似用剪刀在纸上剪出特定形状的洞 --- ### **6. 清理杂点(橡皮擦)** ```python kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5)) # 创建5x5的方块橡皮 mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel, iterations=2) # 擦除小杂点 ``` - **作用**:去除图像中的小白点(比如反光造成的误识别) --- ### **7. 找边界线(描边)** ```python contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) ``` - **功能**:在白色区域边缘画线,就像用马克笔描出色块轮廓 --- ### **8. 画框标记(贴标签)** ```python min_area = 500 # 只处理大于500像素的色块(避免小噪点) for cnt in contours: if cv2.contourArea(cnt) > min_area: # 检查色块大小 x, y, w, h = cv2.boundingRect(cnt) # 获取坐标和大小 cv2.rectangle(original, (x,y), (x+w,y+h), (0,255,0), 2) # 画绿色方框 ``` - **步骤解析**: 1. 遍历所有找到的色块轮廓 2. 用`cv2.contourArea`计算色块面积(像数格子算大小) 3. 只处理足够大的色块(通过`min_area`控制灵敏度) 4. 在原图上用绿色方框标记目标 --- ### **9. 显示结果(展示成果)** ```python cv2.imshow('Original', original) # 显示标记后的图片 cv2.imshow('Mask', mask) # 显示颜色遮罩 cv2.waitKey(0) # 等待按键 cv2.destroyAllWindows() # 关闭所有窗口 ``` - **操作提示**: - 按键盘任意键关闭图片窗口 - 如果窗口卡死,检查代码是否有错误或强制关闭Python --- ### **动手实践指南** 1. **准备图片**:手机拍摄一个纯色物体(比如蓝色水杯) 2. **安装软件**: ```bash pip install opencv-python numpy ``` 3. **修改代码**: - 替换`test.jpg`为你的图片路径 - 调整`lower`和`upper`的HSV值(参考下方表格) --- ### **HSV颜色快速参考表** | 颜色 | H范围 | S范围 | V范围 | 典型值示例 | |------|-------|-------|-------|------------| | 红色 | 0-10 或 170-180 | 100-255 | 50-255 | [0,100,100] - [10,255,255] | | 绿色 | 35-85 | 50-255 | 50-255 | [40,50,50] - [80,255,255] | | 蓝色 | 100-140 | 50-255 | 50-255 | [100,50,50] - [140,255,255] | **调整技巧**:先用画图软件取色,再通过这个代码片段获取HSV值: ```python color = np.uint8([[[B, G, R]]]) # 替换BGR值为目标颜色 hsv_color = cv2.cvtColor(color, cv2.COLOR_BGR2HSV) print(hsv_color) # 输出对应的HSV值 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值