基于YOLOv3的红绿灯检测识别(Python源码可直接运行)

2019-09-18 15:43 次阅读

在实习的期间为公司写的红绿灯检测,基于YOLOv3的训练好的权重,不需要自己重新训练,只需要调用yolov3.weights,可以做到视频或图片中红绿灯的检测识别。

自动检测识别效果

1.红灯检测

20190703202223847.png

2.绿灯检测

20190703202321755.png

python源码

"""
Class definition of YOLO_v3 style detection model on image and video
"""

import colorsys
import os
from timeit import default_timer as timer
import cv2
import numpy as np
from keras import backend as K
from keras.models import load_model
from keras.layers import Input
from PIL import Image, ImageFont, ImageDraw

from yolo3.model import yolo_eval, yolo_body, tiny_yolo_body
from yolo3.utils import letterbox_image
import os
from keras.utils import multi_gpu_model
import collections


class YOLO(object):
    _defaults = {
        "model_path": ''model_data/yolo.h5'',
        "anchors_path": ''model_data/yolo_anchors.txt'',
        "classes_path": ''model_data/coco_classes.txt'',
        "score" : 0.3,
        "iou" : 0.35,
        "model_image_size" : (416, 416),
        "gpu_num" : 1,
    }

    @classmethod
    def get_defaults(cls, n):
         n in cls._defaults:
            return cls._defaults[n]
        else:
            return "Unrecognized attribute name ''" + n + "''"

    def __init__(self, **kwargs):
        self.__dict__.update(self._defaults) # set up default values
        self.__dict__.update(kwargs) # and update with user overrides
        self.class_names = self._get_class()
        self.anchors = self._get_anchors()
        self.sess = K.get_session()
        self.boxes, self.scores, self.classes = self.generate()

    def _get_class(self):
        classes_path = os.path.expanduser(self.classes_path)
        with open(classes_path) as f:
            class_names = f.readlines()
        class_names = [c.strip() for c in class_names]
        return class_names

    def _get_anchors(self):
        anchors_path = os.path.expanduser(self.anchors_path)
        with open(anchors_path) as f:
            anchors = f.readline()
        anchors = [float(x) for x in anchors.split('','')]
        return np.array(anchors).reshape(-1, 2)

    def generate(self):
        model_path = os.path.expanduser(self.model_path)
        assert model_path.endswith(''.h5''), ''Keras model or weights must be a .h5 file.''

        # Load model, or construct model and load weights.
        num_anchors = len(self.anchors)
        num_classes = len(self.class_names)
        is_tiny_version = num_anchors==6 # default setting
        try:
            self.yolo_model = load_model(model_path, compile=False)
        except:
            self.yolo_model = tiny_yolo_body(Input(shape=(None,None,3)), num_anchors//2, num_classes) \
                if is_tiny_version else yolo_body(Input(shape=(None,None,3)), num_anchors//3, num_classes)
            self.yolo_model.load_weights(self.model_path) # make sure model, anchors and classes match
        else:
            assert self.yolo_model.layers[-1].output_shape[-1] == \
                num_anchors/len(self.yolo_model.output) * (num_classes + 5), \
                ''smatch between model and given anchor and class sizes''

        print(''{} model, anchors, and classes loaded.''.format(model_path))

        # Generate colors for drawing bounding boxes.
        hsv_tuples = [(x / len(self.class_names), 1., 1.)
                      for x in range(len(self.class_names))]
        self.colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples))
        self.colors = list(
            map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)),
                self.colors))
        np.random.seed(10101# Fixed seed for consistent colors across runs.
        np.random.shuffle(self.colors)  # Shuffle colors to decorrelate adjacent classes.
        np.random.seed(None)  # Reset seed to default.

        # Generate output tensor targets for filtered bounding boxes.
        self.input_image_shape = K.placeholder(shape=(2, ))
        if self.gpu_num>=2:
            self.yolo_model = multi_gpu_model(self.yolo_model, gpus=self.gpu_num)
        boxes, scores, classes = yolo_, self.input_image_shape,
                score_threshold=self.score, iou_threshold=self.iou)
        return boxes, scores, classes

    def getColorList(self):
        dict = collections.defaultdict(list)

        # 红色
        lower_red = np.array([156, 43, 46])
        upper_red = np.array([180, 255, 255])
        color_list = []
        color_list.append(lower_red)
        color_list.append(upper_red)
        dict[''red''] = color_list

        # 红色2
        lower_red = np.array([0, 43, 46])
        upper_red = np.array([10, 255, 255])
        color_list = []
        color_list.append(lower_red)
        color_list.append(upper_red)
        dict[''red2''] = color_list

        # 橙色
        lower_orange = np.array([11, 43, 46])
        upper_orange = np.array([25, 255, 255])
        color_list = []
        color_list.append(lower_orange)
        color_list.append(upper_orange)
        dict[''orange''] = color_list

        # 黄色
        lower_yellow = np.array([26, 43, 46])
        upper_yellow = np.array([34, 255, 255])
        color_list = []
        color_list.append(lower_yellow)
        color_list.append(upper_yellow)
        dict[''yellow''] = color_list

        # 绿色
        lower_green = np.array([35, 43, 46])
        upper_green = np.array([77, 255, 255])
        color_list = []
        color_list.append(lower_green)
        color_list.append(upper_green)
        dict[''green''] = color_list
        return dict

    def get_color(self,frame):
        print(''go in get_color'')
        hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
        maxsum = -100
        color = None
        color_dict = self.getColorList()
        score = 0
        type = ''black''
        for d in color_dict:
            mask = cv2.inRange(hsv, color_dict[d][0], color_dict[d][1])
            # print(cv2.inRange(hsv, color_dict[d][0], color_dict[d][1]))
            #cv2.imwrite(''images/triffic/'' + f + d + ''.jpg'', mask)
            binary = cv2.threshold(mask, 127, 255, cv2.THRESH_BINARY)[1]
            binary = cv2.dilate(binary, None, iterations=2)
            img, cnts, hiera = cv2.findContours(binary.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
            sum = 0
            for c in cnts:
                sum += cv2.contourArea(c)

            if sum > maxsum:
                maxsum = sum
                color = d
            if sum > score:
                score = sum
                type = d
        return type



    def detect_image(self, image,path):
        print(''class'',self._get_class())

        start = timer()

        if self.model_image_size != (None, None):
            assert self.model_image_size[0]%32 == 0, ''Multiples of 32 required''
            assert self.model_image_size[1]%32 == 0, ''Multiples of 32 required''
            boxed_image = letterbox_image(image, tuple(reversed(self.model_image_size)))
        else:
            new_image_size = (image.width - (image.width % 32),
                              image.height - (image.height % 32))
            boxed_image = letterbox_image(image, new_image_size)
        image_data = np.array(boxed_image, dtype=''float32'')

        print(image_data.shape)
        image_data /= 255.
        image_data = np.expand_dims(image_data, 0# Add batch dimension.


        out_boxes, out_scores, out_classes = self.sess.run(
            [self.boxes, self.scores, self.classes],
            feed_dict={
                self.yolo_model.input: image_data,
                self.input_image_shape: [image.size[1], image.size[0]],
                K.learning_phase(): 0
            })

        print(''Found {} boxes for {}''.format(len(out_boxes), ''img''))

        font = ImageFont.truetype(font=''font/FiraMono-Medium.otf'',
                    size=np.floor(3e-2 * image.size[1] + 0.5).astype(''int32''))
        thickness = (image.size[0] + image.size[1]) // 300
        thickness = 5
        print(''thickness'',thickness)
        print(''out_classes'',out_classes)
        my_class = [''traffic light'']
        imgcv = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)

        for i, c in reversed(list(enumerate(out_classes))):
            predicted_class = self.class_names[c]
            print(''predicted_class'',predicted_class)
            if predicted_class not in my_class:
                continue
            box = out_boxes[i]
            score = out_scores[i]

            label = ''{} {:.2f}''.format(predicted_class, score)

            draw = ImageDraw.Draw(image)

            label_size = draw.textsize(label, font)

            top, left, bottom, right = box
            top = max(0, np.floor(top + 0.5).astype(''int32''))
            left = max(0, np.floor(left + 0.5).astype(''int32''))
            bottom = min(image.size[1], np.floor(bottom + 0.5).astype(''int32''))
            right = min(image.size[0], np.floor(right + 0.5).astype(''int32''))
            print(label, (left, top), (right, bottom))
            img2 = imgcv[top:bottom, left:right]
            color = self.get_color(img2)
            cv2.imwrite(''images/triffic/''+path+str(i) + ''.jpg'', img2)
            if color== ''red'' or color == ''red2'':
                cv2.rectangle(imgcv, (left, top), (right, bottom), color=(0, 0, 255),
                              lineType=2, thickness=8)
                cv2.putText(imgcv, ''{0} {1:.2f}''.format(color, score),
                            (left, top - 15),
                            cv2.FONT_HERSHEY_SIMPLEX,
                            1.2, (0, 0, 255), 4,
                            cv2.LINE_AA)
            elif color == ''green'':
                cv2.rectangle(imgcv, (left, top), (right, bottom), color=(0, 255, 0),
                              lineType=2, thickness=8)
                cv2.putText(imgcv, ''{0} {1:.2f}''.format(color, score),
                            (left, top - 15),
                            cv2.FONT_HERSHEY_SIMPLEX,
                            1.2, (0, 255, 0), 4,
                            cv2.LINE_AA)
            else:
                cv2.rectangle(imgcv, (left, top), (right, bottom), color=(255, 0, 0),
                              lineType=2, thickness=8)
                cv2.putText(imgcv, ''{0} {1:.2f}''.format(color, score),
                            (left, top - 15),
                            cv2.FONT_HERSHEY_SIMPLEX,
                            1.2, (255, 0, 0), 4,
                            cv2.LINE_AA)

            print(imgcv.shape)
        end = timer()
        print(end - start)
        return imgcv

    def close_session(self):
        self.sess.close()

def detect_img(yolo, img_path,fname):
    img = Image.open(img_path)
    import time
    t1 = time.time()

    img = yolo.detect_image(img,fname)
    print(''time: {}''.format(time.time() - t1))
    return img
    #yolo.close_session()

if __name__ == ''__main__'':
    yolo = YOLO()
    video_full_path = ''images/triffic.mp4''
    output = ''images/res.avi''
    cap = cv2.VideoCapture(video_full_path)
    cap.set(cv2.CAP_PROP_POS_FRAMES, 1# 设置要获取的帧号

    fourcc = cv2.VideoWriter_fourcc(*''XVID'')
    fps = cap.get(cv2.CAP_PROP_FPS)
    size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))

    out = cv2.VideoWriter(output, fourcc, fps, size)
    ret = True
    count = 0
    while ret :
        count+=1
        ret, frame = cap.read()
        if not ret :
            print(''结束'')
            break
        image = Image.fromarray(cv2.cvtColor(frame,cv2.COLOR_BGR2RGB))
        image = yolo.detect_image(image,''pic'')
        out.write(image)

    cap.release()
    out.release()
    cv2.destroyAllWindows()
收藏 人收藏
分享:

评论

相关推荐

随着新技术的不断推进,在未来无论你要进入网页开发、数据分析、机器学习、人工智能还是无人车等领域,Python 都是必不可
发表于 04-09 00:00 0次 阅读

人工智能工具的发展趋势与选择详细说明

工程师可以使用大量的人工智能工具来帮助解决问题。识别工程师在人工智能工具方面的需求取决于许多相互关联....
发表于 09-27 08:00 17次 阅读
人工智能工具的发展趋势与选择详细说明

数字类型 数字类型是不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象。数字1和2分别代表...
发表于 09-26 16:49 109次 阅读

mysql与python交互(二)
发表于 09-25 06:04 20次 阅读

我们知道HFSS是一款电磁仿真商用软件,用其进行天线的设计十分方便。而该软件也预留了可以运行脚本的接口,使用者可以使用脚...
发表于 09-24 16:33 103次 阅读

集合set set集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素。集合使用大括号({})框定元素,并以逗号...
发表于 09-24 16:29 77次 阅读

跟老齐学Python从入门到精通PDF电子书免费下载

跟老齐学Python:从入门到精通》是面向编程零基础读者的Python入门教程,内容涵盖了Pytho....
发表于 09-24 08:00 31次 阅读
跟老齐学Python从入门到精通PDF电子书免费下载

Random Forest算法 python实现案例分析

随机森林由Breiman提出的一种分类算法,它使用Bootstrap重采样技术,从原始训练样本集中有....
的头像 人工智能学研社 发表于 09-23 09:58 262次 阅读

数据可视化-Seaborn系列的relplot用法解析

参数解读:必须的参数x,y,data其他参数均为可选;x,y:数据中变量的名称;data:是Data....
的头像 人工智能学研社 发表于 09-23 09:43 187次 阅读

梯度提升方法(Gradient Boosting)算法案例

提升树利用加法模型与前向分步算法实现学习的优化过程,当损失函数为平方损失和指数损失函数时,每一步优化....
的头像 人工智能学研社 发表于 09-23 08:52 268次 阅读

最具影响力的十大编程语言及背后的开发者详细介绍

软件世界中有各种各样的编程语言,每年还会有新的语言出现,最近发布的编程语言就有Scala、Kotli....
的头像 全球人工智能 发表于 09-21 10:11 305次 阅读

一、python常用的函数 input函数 如x=input(“请输入一个数”) 会将用户输入的值强制转换为字符串类型的数据,然后自动赋给x ...
发表于 09-20 16:42 245次 阅读

使用Node.js在深度学习中做图片预处理

做图片预处理的目的是为了解决对象识别中训练集不足的问题。当对象识别应用于某个专用领域的时候,就会遇到....
发表于 09-20 15:40 193次 阅读

我想学习机器学习和人工智能,该从哪开始呢?

当人们发现我的作品,他们通常会私信并提问。我不一定知道所有的答案,但我会尽量回复。人们最常问的问题是....
发表于 09-20 10:21 263次 阅读

Python数据处理代码合集免费下载

本文档的主要内容详细介绍的是Python数据处理代码合集免费下载。
发表于 09-20 08:00 34次 阅读
Python数据处理代码合集免费下载

Python微服务开发的源代码合集免费下载

本文档的主要内容详细介绍的是Python微服务开发的源代码合集免费下载。
发表于 09-20 08:00 46次 阅读
Python微服务开发的源代码合集免费下载

我的应用程序是由Python开发的,现在我想使用FX3 USB套件。我的应用程序需要枚举我们的USB设备,将每个端点绑定到一个特...
发表于 09-20 06:09 33次 阅读

Python3.6零基础入门与实战PDF电子书免费下载

随着大数据技术的发展及Python在人工智能领域的火热应用,Python得到越来越多的应用。本书就是....
发表于 09-19 11:54 93次 阅读
Python3.6零基础入门与实战PDF电子书免费下载

Biu~哈喽大家好,作为汁生的程序猿,debug是必学课,曾经有位伟大的程序猿说过“debug用的好,你就回家早,Biu~”。 MDE...
发表于 09-19 09:05 32次 阅读

Python核心编程第3版PDF电子书免费下载

本书是经典畅销图书《Python 核心编程(第二版)》的全新升级版本,总共分为 3 部分。第 1 部....
发表于 09-19 08:00 65次 阅读
Python核心编程第3版PDF电子书免费下载

成为爬虫工程师需要哪些技能

因为我在南京上学,所以我一开始只是在南京投了简历,我一共面试了十几家企业,其中只有一家没有给我发of....
的头像 工程师人生 发表于 09-18 11:30 222次 阅读

用于数据科学的python必学模块之Pandas的备忘单资料免费下载

http://file.elecfans.com/web1/M00/A6/D4/o4YBAF2B4j....
发表于 09-18 08:00 16次 阅读
用于数据科学的python必学模块之Pandas的备忘单资料免费下载

用于数据科学的python必学模块之Numpy的备忘单资料免费下载

本文档的主要内容详细介绍的是用于数据科学的python必学模块之Numpy的备忘单资料免费下载。
发表于 09-18 08:00 13次 阅读
用于数据科学的python必学模块之Numpy的备忘单资料免费下载

python必学模块之networkx的详细资料说明

networkx的结构可以从其源代码的组织中看出。该软件包提供图形对象类、创建标准图形的生成器、读取....
发表于 09-18 08:00 43次 阅读
python必学模块之networkx的详细资料说明

用于数据科学的python必学模块之Matplotlib的资料说明

本文档的主要内容详细介绍的是用于数据科学的python必学模块之Matplotlib的资料说明。 ....
发表于 09-18 08:00 16次 阅读
用于数据科学的python必学模块之Matplotlib的资料说明

用于数据科学的python必学模块之Keras的资料说明

本文档的主要内容详细介绍的是用于数据科学的python必学模块之Keras的资料说明。
发表于 09-18 08:00 31次 阅读
用于数据科学的python必学模块之Keras的资料说明

python数据科学备忘单jupyter笔记本免费下载

本文档的主要内容详细介绍的是python数据科学备忘单jupyter笔记本免费下载。
发表于 09-18 08:00 35次 阅读
python数据科学备忘单jupyter笔记本免费下载

Python的一些经典复习资料免费下载

Python 是什么类型的语言? Python 是脚本语言脚本语言 (Scripting langu....
发表于 09-18 08:00 54次 阅读
Python的一些经典复习资料免费下载

笨办法学C语言中文版电子教程免费下载

这本书的目标是让读者掌握足够的C语言技能,从而可以自己用C语言编写程序或者修改别人的C语言代码,成为....
发表于 09-17 17:07 99次 阅读
笨办法学C语言中文版电子教程免费下载

python的虚拟环境
发表于 09-17 09:02 66次 阅读

Python数据分析基础ReadingDay7_应用程序
发表于 09-17 08:41 77次 阅读

python restful api 学习笔记2 快速开始
发表于 09-16 13:39 44次 阅读

为什么学习深度学习需要使用PyTorch和TensorFlow框架

如果你需要深度学习模型,那么 PyTorch 和 TensorFlow 都是不错的选择。 并非每个....
发表于 09-14 10:57 403次 阅读

Python 2.x 淘汰乃大势所趋

而论及 Java,一年两次迭代的速度早已让不少开发者痛苦不堪,其纷纷开启对 Oracle 的吐槽模式....
的头像 AI科技大本营 发表于 09-07 07:18 470次 阅读

精通Python爬虫框架Scrapy PDF英文原版电子书免费下载

Scrapy是使用Python开发的一个快速、高层次的屏幕抓取和Web抓取框架,用于抓Web站点并从....
发表于 09-05 08:00 85次 阅读
精通Python爬虫框架Scrapy PDF英文原版电子书免费下载

如何用480个LED实现音乐可视化

 DMX是一种基于RS-485的通信协议,广泛用于事件中的光控制。目的是添加一个界面,以便可以通过照....
的头像 39度创意研究所 发表于 09-04 17:12 332次 阅读

使用Python实践强化学习PDF电子书免费下载

本书面向对人工智能感兴趣并想从零开始学习强化学习的机器学习开发者和深度学习爱好者。阅读这本书,通过在....
发表于 09-03 08:00 115次 阅读
使用Python实践强化学习PDF电子书免费下载

Flask Web开发基于Python的Web应用开发实战PDF电子书免费下载

本书共分三部分,全面介绍如何基于 Python 微框架 Flask 进行 Web 开发。第一部分是 ....
发表于 09-02 08:00 61次 阅读
Flask Web开发基于Python的Web应用开发实战PDF电子书免费下载

Flask的背景信息介绍和使用Flask进行Web开发的资料说明

“micro”并不意味着整个Web应用程序必须适合于单个python文件,尽管它当然可以。也不意味着....
发表于 09-02 08:00 55次 阅读
Flask的背景信息介绍和使用Flask进行Web开发的资料说明

解开Python身上神奇的谜团

一个人开发一门语言,难度那是相当大的。好在当时而立之年的Guido已经有了相当的开发经验。此前,他花....
的头像 新智元 发表于 09-01 07:43 356次 阅读

运维工程师为什么要学Python

现在很多互联网公司的运维工程师需要学Python,因为现阶段,掌握一门开发语言已经成为高级运维工程师....
的头像 工程师人生 发表于 08-26 16:05 442次 阅读

Python基础教程第3版中国PDF电子书免费下载

本书包括 Python 程序设计的方方面面:首先,从 Python 的安装开始,随后介绍了 Pyth....
发表于 08-26 14:30 147次 阅读
Python基础教程第3版中国PDF电子书免费下载

Python语言中的云端系统知识

Python语言的云端系统知识
发表于 08-21 17:31 522次 阅读

Python深度学习弗朗索瓦肖莱版PDF电子书中文版免费下载

本书由 Keras 之父、现任 Google 人工智能研究员的弗朗索瓦 • 肖莱(François ....
发表于 08-20 08:00 164次 阅读
Python深度学习弗朗索瓦肖莱版PDF电子书中文版免费下载

OpenCV跨平台计算机视觉库的详细资料简介

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Window....
发表于 08-19 08:00 116次 阅读
OpenCV跨平台计算机视觉库的详细资料简介

使用 Python 和 Jupyter 笔记本快速构建基于 FPGA 的设计并进行编程

ADUM3211 使用磁性耦合机制,以高达 1000 kbps 的数据速率跨越隔离栅传输数据。因此,....
发表于 08-16 10:23 1240次 阅读

用Python做科学计算中文版PDF电子书免费下载

和Matlab不同,Python的科学软件包由众多的社区维护和发布,因此要一一将其收集齐安装到你的电....
发表于 08-16 08:00 210次 阅读
用Python做科学计算中文版PDF电子书免费下载

Python在学习人工智能中的重要性

随着人工智能的热度越来越高,Python这个词我们听到的越来越多,伴随着Python这个单词一起涌入....
发表于 08-14 09:55 167次 阅读
Python在学习人工智能中的重要性

Python标准库中文版PDF免费下载

五年前我偶然遇到了 Python, 开始了我的 Python 之旅, 我花费了大量的时间在 comp....
发表于 08-14 08:00 151次 阅读
Python标准库中文版PDF免费下载

笨办法学Python第四版PDF电子书免费下载

《笨办法学 Python》(Learn Python The Hard Way,简称 LPTHW)是....
发表于 08-12 08:00 268次 阅读
笨办法学Python第四版PDF电子书免费下载

使用OpenMV设计的智能机械臂的Python文件免费下载

本文档的主要内容详细介绍的是使用OpenMV设计的智能机械臂的Python文件免费下载。
发表于 08-09 08:00 101次 阅读
使用OpenMV设计的智能机械臂的Python文件免费下载

如何在Python中从头构建CNN?

在过去的几年中,有很多关于卷积神经网络(CNN)的讨论,尤其是因为它们已经彻底改变了计算机视觉领域。
的头像 Imagination Tech 发表于 08-08 11:07 596次 阅读

使用Vagrant搭建python开发环境的实例讲解

入职就赶紧投入开发,别费时间搭开发环境。——编程三分钟” 每每新同事入职,都要在自己电脑上配置一堆....
的头像 马哥Linux运维 发表于 08-03 11:20 549次 阅读

总结Python面试中最常见的100个问题

Python中的内存管理由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。....
的头像 将门创投 发表于 08-02 14:47 561次 阅读

140种Python标准库、第三方库和外部工具都有了

Python标准库:Python自带的标准库。Python标准库无需安装,只需要先通过import方....
的头像 AI科技大本营 发表于 08-02 09:24 490次 阅读

pgen解析器的诸多缺陷,并介绍了PEG解析器的优点

我们希望使用 pgen 表示法来编写如下的语法。(请注意,这个示例描述了一种玩具语言(toy lan....
的头像 AI科技大本营 发表于 08-02 09:19 484次 阅读

如何使用树莓派连接EM-18RFID阅读器模块 并通过Python脚本从一些RFID卡访问信息

RFID或射频识别是一种通过电磁波进行通信的方式(射频波,具体而言)。 RFID标签和RFID卡通常....
的头像 39度创意研究所 发表于 07-29 10:14 629次 阅读

如何才能成为IT的编程高手

我在IT界摸爬滚打快十年了,下面简单说说关于编程需要掌握的技术与相关知识。很多人感觉编程很难。很多人....
的头像 开源嵌入式 发表于 07-28 09:12 717次 阅读

从Python 1.0到3.0,我们走了30年

从历史发展的角度出发,我们才能看清 Python 崛起的偶然性和必然性。本文将结合技术和产业的发展,....
的头像 新智元 发表于 07-27 07:34 880次 阅读

怎样用树莓派制作程序

尽管他是一名狂热的计算机爱好者并且对微控制器非常热衷,但是当它第一次出现时我对Pi非常怀疑。该计算机....
的头像 39度创意研究所 发表于 07-26 08:50 655次 阅读

怎样用Python制作一个基本程序

您可以使用许多不同的语言对计算机进行编程,例如C,C ++,C#,Java,Python等,但大多数....
的头像 39度创意研究所 发表于 07-26 08:42 732次 阅读
电子发烧友 华秋开发
APP 网站地图
红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三