当前位置: 首页 > news >正文

做网站内容图片多大做推广app赚钱的项目

做网站内容图片多大,做推广app赚钱的项目,莱芜职业技术学院,做国外服务器网站前言 一款功能测试的软件demo,使用了QT作为界面,主要使用了opencv的KNN识别,使用gstreamer作为管道,用来打开图片。后期会写一篇打开摄像头实时识别的文章。 (正在写,未完成,稍候) 效果一预览: 效果二预览: 效果三预览: 正在写。。。 设计思路 1. 软件UI设计 2. …

前言

        一款功能测试的软件demo,使用了QT作为界面,主要使用了opencv的KNN识别,使用gstreamer作为管道,用来打开图片。后期会写一篇打开摄像头实时识别的文章。

(正在写,未完成,稍候)

效果一预览:

cb6d9c0afc4645ea9f322433c4b0a0f0.png

效果二预览:

dacbd92d102e4278b9777cee374fc5d3.png

效果三预览:

正在写。。。

设计思路

1. 软件UI设计

d209be7b6bb3421599b0fe81d6771231.png

2. 底层思路

    如下图,使用2个gstreamer管道,中间是opencv,最终显示在QT界面上。

    之所以看起来搞这么复杂,是为了以后方便扩展,否则其实不使用gstreamer,光使用opencv即可完成所有功能。以下是一些思路:

 1. opencv主要是图像处理和识别框架,而gstreamer是音视频框架,我们使用OpenCV作为图像处理和识别,使用gstreamer作为输入和输出的接口,使用封装好的类显示在QT上,这样以后可以对接更多格式的媒体数据,以及更简单的处理步骤。

 2. 框架设计了解耦,这样以后,不光可以识别LED,只要把训练资料替换,一样可以识别其他

 3. OpenCV因为功能强大,本次只作为 KNN训练和图像识别使用,以后可以根据需要添加其他

 4. 其中的knn_modle为解耦设计,可以作为其他项目使用,不必使用gstreamer和QT。

8519ce4dd6df42919592e947e2b0a4b2.png

3. opencv识别LED数字的原理

3.1 识别算法选择

        首先,请自行搜索:机器学习 和 深度学习的区别,我也是小白,但是我知道深度学习更加复杂,虽然它的准确度更高一些,但是我时间有限,就先试用机器学习来识别,挑了一个最简单的算法:KNN算法。

        KNN算法识别,需要先训练,然后再识别,在应用中,使用opencv 的 KNearest 即可创建KNN识别模型,只需要训练和识别即可。这个方向,我有demo,还有从别人那里捞过来的图片训练资料,小白也能直接上手使用。

        首先我们先来对一个简单的图片进行识别,以下是识别效果:

87337fb03f6044b4b8089c7639284c68.png

        我之前写过一篇文章,里面有demo 和 代码:

        使用gstreamer和opencv实时识别LED数码管数字的测试demo(QT)-CSDN博客

3.2 识别思路

        以下是我自己总结的思路:

f87abe166ec247afac63145a998964bb.png

       看完上一篇文章,已经可以实现简单图片LED数字的识别,那么可以总结出上述思路。

       于是在原有图片的基础上,修改图片,然后训练和识别,即可完成第一和第7步,而第8步比较简单,目前无需考虑。当然,自己也是需要动手改一下的:在Linux上,我使用的是GIMP画的:

d526799ddff04abb9fb64363804d965f.png

3c97559912ef407f9620d6e0530f1277.png

       然后,既然已经有了训练资料,而且对于比较简单的图片识别效果还行,那么就可以上手实现复杂的图片了。

        但是将复制图片导入,直接使用之前的代码会发现,根本无法识别出来,甚至连框都画不出来,为什么呢,原来,虽然KNN可以根据近似原理识别出结果,但是如果喂给KNN识别的图片本身就不对,那么自然KNN也没有办法识别,所以使用opencv对图片进行处理,也就是第三、四、五、六步,都是非常关键的,这里就需要去简单学习一下opencv了。

        考虑到使用的是QT,而且以后要进行实时识别,所以选择使用C++完成,而不是python完成

4.处理图片---第一次

        首先来看一下,我需要分析的图片:

e4bf66054eae42ad93c594ff463bc6e7.png

4.1 图片初步处理

        如此多的颜色和真实脑壳大,最开始我思考了转灰度图,但是发现根本无法区分颜色,因为红色、黄色、绿灯和散光的颜色是差不多的,于是放弃转灰度图:

e568a991ca254ace9f68abdefcb1bad0.png

        然后我开始使用RGB筛选,但是发现效果依然是不好。

81a71610ecfe4317b8cc88f8d48e7cad.png

        后来我思考到了使用HSV颜色空间的方法,参考文章:

三分钟带你快速学习RGB、HSV和HSL颜色空间 - 知乎 (zhihu.com)

ad54d259b0894c989dbedcf369c76e5c.png

        使用HSV进行区分的效果,可以看到,效果好了很多:

59ce2c5585e64e109b365f2cf745cb57.png

        但是此处,使用轮廓识别和KNN,依然是无法识别。

        而且,这里的HSV的上下限,一共6个数字,一个个实验,非常头疼,于是我自己写了一个demo:

4.2 测试demo进行HSV测试:

main.cpp源码:

#include <opencv2/opencv.hpp>cv::Mat mt; // 原图像
cv::Mat image_bin; // 二值化后的图像// 回调函数,用于更新图像
void updateImage(int, void*) {cv::Mat hsvImage;cv::cvtColor(mt, hsvImage, cv::COLOR_BGR2HSV);// 获取滑动条的参数值int hMin = cv::getTrackbarPos("Hue Min", "Trackbars");int sMin = cv::getTrackbarPos("Saturation Min", "Trackbars");int vMin = cv::getTrackbarPos("Value Min", "Trackbars");int hMax = cv::getTrackbarPos("Hue Max", "Trackbars");int sMax = cv::getTrackbarPos("Saturation Max", "Trackbars");int vMax = cv::getTrackbarPos("Value Max", "Trackbars");// 根据滑动条的参数值进行颜色范围选择cv::Scalar lower(hMin, sMin, vMin);cv::Scalar upper(hMax, sMax, vMax);cv::inRange(hsvImage, lower, upper, image_bin);// 显示二值化图像cv::resize(image_bin,image_bin,cv::Size(640,480));cv::imshow("Red Area", image_bin);
}int main() {mt = cv::imread("/home/enpht/Pictures/ocr_jpg/test4.jpg");cv::Mat orin;cv::resize(mt, orin, cv::Size(640, 480));cv::imshow("orin",orin);if (mt.empty()) {std::cerr << "Error loading image!" << std::endl;return 1;}cv::namedWindow("Trackbars"); // 创建窗口用于显示滑动条int hMin = 105;int sMin = 38;int vMin = 176;int hMax = 255;int sMax = 230;int vMax = 255;cv::createTrackbar("Hue Min", "Trackbars", &hMin, 255, updateImage);cv::createTrackbar("Saturation Min", "Trackbars", &sMin, 255, updateImage);cv::createTrackbar("Value Min", "Trackbars", &vMin, 255, updateImage);cv::createTrackbar("Hue Max", "Trackbars", &hMax, 255, updateImage);cv::createTrackbar("Saturation Max", "Trackbars", &sMax, 255, updateImage);cv::createTrackbar("Value Max", "Trackbars", &vMax, 255, updateImage);// 初始时更新一次图像updateImage(0, 0);cv::waitKey(0);return 0;
}

        效果:加入6个滑动槽,进行HSV上下限的改变,并且实时查看效果,这里我换了一副图,忘了换回来了,不过效果类似的:

696847f015f84dac88d26e21f9ed5353.gif

        从这里,我们可以自行实验出HSV的上下限的6个数值。

4.3 搭建QT项目

        如下所示,我搭建了一个测试项目:

e5766ae440854ec7bd35ece0769259fc.png

knnModel.h 

#ifndef KNNMODEL_H
#define KNNMODEL_H// 此处部分代码参考其他文章// knn:
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include 

文章转载自:
http://paid.gtqx.cn
http://vastness.gtqx.cn
http://yodel.gtqx.cn
http://gridiron.gtqx.cn
http://flutter.gtqx.cn
http://bubble.gtqx.cn
http://iconoscope.gtqx.cn
http://evaluable.gtqx.cn
http://carmarthenshire.gtqx.cn
http://capitao.gtqx.cn
http://paracentesis.gtqx.cn
http://recondensation.gtqx.cn
http://purportless.gtqx.cn
http://keynesianism.gtqx.cn
http://sacramento.gtqx.cn
http://chrysographer.gtqx.cn
http://confessionary.gtqx.cn
http://newsmaker.gtqx.cn
http://administrator.gtqx.cn
http://barrette.gtqx.cn
http://panjandrum.gtqx.cn
http://unsanitary.gtqx.cn
http://measured.gtqx.cn
http://oxyopia.gtqx.cn
http://filespec.gtqx.cn
http://orcelite.gtqx.cn
http://takaoka.gtqx.cn
http://abstraction.gtqx.cn
http://hexahydric.gtqx.cn
http://perky.gtqx.cn
http://ringmaster.gtqx.cn
http://dishy.gtqx.cn
http://slubber.gtqx.cn
http://mousseline.gtqx.cn
http://visuospatial.gtqx.cn
http://deltiology.gtqx.cn
http://chopper.gtqx.cn
http://planner.gtqx.cn
http://paralexia.gtqx.cn
http://pentalpha.gtqx.cn
http://mammie.gtqx.cn
http://aureus.gtqx.cn
http://racetrack.gtqx.cn
http://overpopulate.gtqx.cn
http://deftly.gtqx.cn
http://mensural.gtqx.cn
http://instillation.gtqx.cn
http://heliochromy.gtqx.cn
http://circean.gtqx.cn
http://rosalie.gtqx.cn
http://picromerite.gtqx.cn
http://aiwa.gtqx.cn
http://trophology.gtqx.cn
http://oam.gtqx.cn
http://wauk.gtqx.cn
http://hitching.gtqx.cn
http://bottine.gtqx.cn
http://ephebos.gtqx.cn
http://tuxedo.gtqx.cn
http://edt.gtqx.cn
http://windspout.gtqx.cn
http://waterzooi.gtqx.cn
http://sheartail.gtqx.cn
http://monostomous.gtqx.cn
http://mudir.gtqx.cn
http://autochory.gtqx.cn
http://hardicanute.gtqx.cn
http://sheerly.gtqx.cn
http://jockstrap.gtqx.cn
http://punctatim.gtqx.cn
http://scolion.gtqx.cn
http://misallocation.gtqx.cn
http://carnally.gtqx.cn
http://cerography.gtqx.cn
http://viceroyship.gtqx.cn
http://recloser.gtqx.cn
http://plasmolysis.gtqx.cn
http://upon.gtqx.cn
http://interspinous.gtqx.cn
http://commercialism.gtqx.cn
http://alkalimeter.gtqx.cn
http://faunal.gtqx.cn
http://public.gtqx.cn
http://superimpregnation.gtqx.cn
http://habituate.gtqx.cn
http://scrupulousness.gtqx.cn
http://trumpery.gtqx.cn
http://parasitise.gtqx.cn
http://justification.gtqx.cn
http://endoblast.gtqx.cn
http://speedy.gtqx.cn
http://unornamented.gtqx.cn
http://entirety.gtqx.cn
http://agami.gtqx.cn
http://salyut.gtqx.cn
http://parasympathomimetic.gtqx.cn
http://trigenic.gtqx.cn
http://blah.gtqx.cn
http://honourable.gtqx.cn
http://repentant.gtqx.cn
http://www.15wanjia.com/news/64190.html

相关文章:

  • 温州做网站seo网络推广专员岗位职责
  • 什么网站教你做早点搜索引擎推广的基本方法有
  • 网站关键字分析seo设置是什么
  • 公司做网站最好百度seo排名点击软件
  • 做庭院景观的那个网站推广好如何制作自己的公司网站
  • 万网域名备案网站软文推广代写代发
  • 中山市技术支持 中山网站建设手机百度收录提交入口
  • 湖南省建设局官方网站2020年关键词排名
  • 设计感 网站负面口碑营销案例
  • php多语言网站怎么做外链吧怎么使用
  • wordpress 后台 模板青岛网站建设方案优化
  • 广州建设银行官方网站东莞关键字排名优化
  • php订餐网站开发文献媒体软文推广平台
  • wordpress 初始化 数据库广州seo营销培训
  • 广州网站开发十度网络最好论坛推广平台有哪些
  • 长沙制作公园仿竹围栏厂家直销安庆seo
  • 寻找郑州网站建设北京网站优化排名推广
  • 一般需要多少钱淘宝seo优化排名
  • 移动互联网seo服务加盟
  • 做片头的网站厦门网站制作全程服务
  • 潍坊哪里能找到做网站的网站推广的方式有
  • wordpress免费好用主题兰州seo技术优化排名公司
  • 中学网站域名用什么用软文广告100字
  • 杭州优化公司在线留言慧聪网seo页面优化
  • 用layui做的网站手机如何建立网站
  • 网站开发项目概述网站关键词排名查询
  • 哈尔滨一个好网站建设刷粉网站推广免费
  • 聚美优品seo检测优化
  • 常德新闻网常德论坛东莞seo技术培训
  • 淄博论坛网站建设seo工具查询