基于yolov8的200鸟类智能检测与识别系统python源码+onnx模型+评估指标曲线+精美GUI界面

news2024/12/26 16:46:12

【算法介绍】

基于YOLOv8的200种鸟类智能检测与识别系统是一款基于深度学习的目标检测系统,该系统利用YOLOv8框架,通过11788张图片训练出一个能够进行鸟类智能检测与识别的模型,可以识别200种不同的鸟类。

该系统采用Python与PyQt5开发,拥有简洁的用户界面,支持图片、视频以及摄像头进行实时目标检测,并能够保存检测结果。用户可以通过点击图片、视频或摄像头图标,选择需要检测的内容,系统会自动显示检测结果,包括目标位置、目标总数、置信度以及检测用时等信息。

该系统在生态保护、科学研究、野生动物监测以及生态旅游等领域具有广泛的应用前景。它可以帮助研究者和保护人员准确监测鸟类种群的动态,评估生物多样性,及时发现稀有或濒危鸟种,制定更有效的保护措施。同时,它也可以为科学研究提供大量精确的鸟类观察数据,协助进行行为学、迁徙学和生态学的研究。

此外,在野生动物监测方面,该系统能够减少人为干扰,提高数据收集效率和准确度,有助于森林管理及非法狩猎的预防。在生态旅游业中,鸟类检测与识别技术可以提升游客体验,实现自动化识别和解说服务,让游客更深入地了解自然界的奥妙。

【效果展示】

【测试环境】

windows10
anaconda3+python3.8
torch==1.9.0+cu111
ultralytics==8.2.95

【模型可以检测出类别】

001-Black_footed_Albatross
002-Laysan_Albatross
003-Sooty_Albatross
004-Groove_billed_Ani
005-Crested_Auklet
006-Least_Auklet
007-Parakeet_Auklet
008-Rhinoceros_Auklet
009-Brewer_Blackbird
010-Red_winged_Blackbird
011-Rusty_Blackbird
012-Yellow_headed_Blackbird
013-Bobolink
014-Indigo_Bunting
015-Lazuli_Bunting
016-Painted_Bunting
017-Cardinal
018-Spotted_Catbird
019-Gray_Catbird
020-Yellow_breasted_Chat
021-Eastern_Towhee
022-Chuck_will_Widow
023-Brandt_Cormorant
024-Red_faced_Cormorant
025-Pelagic_Cormorant
026-Bronzed_Cowbird
027-Shiny_Cowbird
028-Brown_Creeper
029-American_Crow
030-Fish_Crow
031-Black_billed_Cuckoo
032-Mangrove_Cuckoo
033-Yellow_billed_Cuckoo
034-Gray_crowned_Rosy_Finch
035-Purple_Finch
036-Northern_Flicker
037-Acadian_Flycatcher
038-Great_Crested_Flycatcher
039-Least_Flycatcher
040-Olive_sided_Flycatcher
041-Scissor_tailed_Flycatcher
042-Vermilion_Flycatcher
043-Yellow_bellied_Flycatcher
044-Frigatebird
045-Northern_Fulmar
046-Gadwall
047-American_Goldfinch
048-European_Goldfinch
049-Boat_tailed_Grackle
050-Eared_Grebe
051-Horned_Grebe
052-Pied_billed_Grebe
053-Western_Grebe
054-Blue_Grosbeak
055-Evening_Grosbeak
056-Pine_Grosbeak
057-Rose_breasted_Grosbeak
058-Pigeon_Guillemot
059-California_Gull
060-Glaucous_winged_Gull
061-Heermann_Gull
062-Herring_Gull
063-Ivory_Gull
064-Ring_billed_Gull
065-Slaty_backed_Gull
066-Western_Gull
067-Anna_Hummingbird
068-Ruby_throated_Hummingbird
069-Rufous_Hummingbird
070-Green_Violetear
071-Long_tailed_Jaeger
072-Pomarine_Jaeger
073-Blue_Jay
074-Florida_Jay
075-Green_Jay
076-Dark_eyed_Junco
077-Tropical_Kingbird
078-Gray_Kingbird
079-Belted_Kingfisher
080-Green_Kingfisher
081-Pied_Kingfisher
082-Ringed_Kingfisher
083-White_breasted_Kingfisher
084-Red_legged_Kittiwake
085-Horned_Lark
086-Pacific_Loon
087-Mallard
088-Western_Meadowlark
089-Hooded_Merganser
090-Red_breasted_Merganser
091-Mockingbird
092-Nighthawk
093-Clark_Nutcracker
094-White_breasted_Nuthatch
095-Baltimore_Oriole
096-Hooded_Oriole
097-Orchard_Oriole
098-Scott_Oriole
099-Ovenbird
100-Brown_Pelican
101-White_Pelican
102-Western_Wood_Pewee
103-Sayornis
104-American_Pipit
105-Whip_poor_Will
106-Horned_Puffin
107-Common_Raven
108-White_necked_Raven
109-American_Redstart
110-Geococcyx
111-Loggerhead_Shrike
112-Great_Grey_Shrike
113-Baird_Sparrow
114-Black_throated_Sparrow
115-Brewer_Sparrow
116-Chipping_Sparrow
117-Clay_colored_Sparrow
118-House_Sparrow
119-Field_Sparrow
120-Fox_Sparrow
121-Grasshopper_Sparrow
122-Harris_Sparrow
123-Henslow_Sparrow
124-Le_Conte_Sparrow
125-Lincoln_Sparrow
126-Nelson_Sharp_tailed_Sparrow
127-Savannah_Sparrow
128-Seaside_Sparrow
129-Song_Sparrow
130-Tree_Sparrow
131-Vesper_Sparrow
132-White_crowned_Sparrow
133-White_throated_Sparrow
134-Cape_Glossy_Starling
135-Bank_Swallow
136-Barn_Swallow
137-Cliff_Swallow
138-Tree_Swallow
139-Scarlet_Tanager
140-Summer_Tanager
141-Artic_Tern
142-Black_Tern
143-Caspian_Tern
144-Common_Tern
145-Elegant_Tern
146-Forsters_Tern
147-Least_Tern
148-Green_tailed_Towhee
149-Brown_Thrasher
150-Sage_Thrasher
151-Black_capped_Vireo
152-Blue_headed_Vireo
153-Philadelphia_Vireo
154-Red_eyed_Vireo
155-Warbling_Vireo
156-White_eyed_Vireo
157-Yellow_throated_Vireo
158-Bay_breasted_Warbler
159-Black_and_white_Warbler
160-Black_throated_Blue_Warbler
161-Blue_winged_Warbler
162-Canada_Warbler
163-Cape_May_Warbler
164-Cerulean_Warbler
165-Chestnut_sided_Warbler
166-Golden_winged_Warbler
167-Hooded_Warbler
168-Kentucky_Warbler
169-Magnolia_Warbler
170-Mourning_Warbler
171-Myrtle_Warbler
172-Nashville_Warbler
173-Orange_crowned_Warbler
174-Palm_Warbler
175-Pine_Warbler
176-Prairie_Warbler
177-Prothonotary_Warbler
178-Swainson_Warbler
179-Tennessee_Warbler
180-Wilson_Warbler
181-Worm_eating_Warbler
182-Yellow_Warbler
183-Northern_Waterthrush
184-Louisiana_Waterthrush
185-Bohemian_Waxwing
186-Cedar_Waxwing
187-American_Three_toed_Woodpecker
188-Pileated_Woodpecker
189-Red_bellied_Woodpecker
190-Red_cockaded_Woodpecker
191-Red_headed_Woodpecker
192-Downy_Woodpecker
193-Bewick_Wren
194-Cactus_Wren
195-Carolina_Wren
196-House_Wren
197-Marsh_Wren
198-Rock_Wren
199-Winter_Wren
200-Common_Yellowthroat

【训练数据集】

https://blog.csdn.net/FL1623863129/article/details/136336080

【训练信息】

参数
训练集图片数6929
验证集图片数1980
训练map82.9%
训练精度(Precision)78.0%
训练召回率(Recall)76.7%
验证集测试精度信息

类别

MAP50(单位:%)

all

83

001-Black_footed_Albatross

74

002-Laysan_Albatross

82

003-Sooty_Albatross

56

004-Groove_billed_Ani

72

005-Crested_Auklet

67

006-Least_Auklet

78

007-Parakeet_Auklet

100

008-Rhinoceros_Auklet

90

009-Brewer_Blackbird

63

010-Red_winged_Blackbird

100

011-Rusty_Blackbird

30

012-Yellow_headed_Blackbird

100

013-Bobolink

100

014-Indigo_Bunting

96

015-Lazuli_Bunting

93

016-Painted_Bunting

98

017-Cardinal

95

018-Spotted_Catbird

88

019-Gray_Catbird

97

020-Yellow_breasted_Chat

100

021-Eastern_Towhee

100

022-Chuck_will_Widow

85

023-Brandt_Cormorant

57

024-Red_faced_Cormorant

83

025-Pelagic_Cormorant

62

026-Bronzed_Cowbird

95

027-Shiny_Cowbird

25

028-Brown_Creeper

87

029-American_Crow

67

030-Fish_Crow

24

031-Black_billed_Cuckoo

68

032-Mangrove_Cuckoo

63

033-Yellow_billed_Cuckoo

65

034-Gray_crowned_Rosy_Finch

100

035-Purple_Finch

100

036-Northern_Flicker

100

037-Acadian_Flycatcher

50

038-Great_Crested_Flycatcher

72

039-Least_Flycatcher

57

040-Olive_sided_Flycatcher

68

041-Scissor_tailed_Flycatcher

90

042-Vermilion_Flycatcher

98

043-Yellow_bellied_Flycatcher

64

044-Frigatebird

95

045-Northern_Fulmar

85

046-Gadwall

88

047-American_Goldfinch

100

048-European_Goldfinch

100

049-Boat_tailed_Grackle

54

050-Eared_Grebe

83

051-Horned_Grebe

65

052-Pied_billed_Grebe

100

053-Western_Grebe

99

054-Blue_Grosbeak

100

055-Evening_Grosbeak

100

056-Pine_Grosbeak

99

057-Rose_breasted_Grosbeak

100

058-Pigeon_Guillemot

95

059-California_Gull

56

060-Glaucous_winged_Gull

56

061-Heermann_Gull

74

062-Herring_Gull

46

063-Ivory_Gull

100

064-Ring_billed_Gull

70

065-Slaty_backed_Gull

72

066-Western_Gull

56

067-Anna_Hummingbird

73

068-Ruby_throated_Hummingbird

86

069-Rufous_Hummingbird

77

070-Green_Violetear

96

071-Long_tailed_Jaeger

45

072-Pomarine_Jaeger

53

073-Blue_Jay

75

074-Florida_Jay

90

075-Green_Jay

100

076-Dark_eyed_Junco

91

077-Tropical_Kingbird

98

078-Gray_Kingbird

89

079-Belted_Kingfisher

89

080-Green_Kingfisher

91

081-Pied_Kingfisher

99

082-Ringed_Kingfisher

84

083-White_breasted_Kingfisher

100

084-Red_legged_Kittiwake

84

085-Horned_Lark

100

086-Pacific_Loon

82

087-Mallard

100

088-Western_Meadowlark

100

089-Hooded_Merganser

96

090-Red_breasted_Merganser

80

091-Mockingbird

76

092-Nighthawk

91

093-Clark_Nutcracker

100

094-White_breasted_Nuthatch

100

095-Baltimore_Oriole

100

096-Hooded_Oriole

90

097-Orchard_Oriole

96

098-Scott_Oriole

82

099-Ovenbird

97

100-Brown_Pelican

94

101-White_Pelican

100

102-Western_Wood_Pewee

55

103-Sayornis

46

104-American_Pipit

97

105-Whip_poor_Will

73

106-Horned_Puffin

100

107-Common_Raven

64

108-White_necked_Raven

80

109-American_Redstart

96

110-Geococcyx

100

111-Loggerhead_Shrike

69

112-Great_Grey_Shrike

78

113-Baird_Sparrow

67

114-Black_throated_Sparrow

98

115-Brewer_Sparrow

59

116-Chipping_Sparrow

74

117-Clay_colored_Sparrow

83

118-House_Sparrow

53

119-Field_Sparrow

70

120-Fox_Sparrow

94

121-Grasshopper_Sparrow

79

122-Harris_Sparrow

97

123-Henslow_Sparrow

86

124-Le_Conte_Sparrow

79

125-Lincoln_Sparrow

93

126-Nelson_Sharp_tailed_Sparrow

84

127-Savannah_Sparrow

95

128-Seaside_Sparrow

83

129-Song_Sparrow

85

130-Tree_Sparrow

82

131-Vesper_Sparrow

81

132-White_crowned_Sparrow

98

133-White_throated_Sparrow

81

134-Cape_Glossy_Starling

98

135-Bank_Swallow

71

136-Barn_Swallow

78

137-Cliff_Swallow

45

138-Tree_Swallow

83

139-Scarlet_Tanager

100

140-Summer_Tanager

100

141-Artic_Tern

62

142-Black_Tern

84

143-Caspian_Tern

62

144-Common_Tern

38

145-Elegant_Tern

61

146-Forsters_Tern

58

147-Least_Tern

87

148-Green_tailed_Towhee

96

149-Brown_Thrasher

100

150-Sage_Thrasher

86

151-Black_capped_Vireo

91

152-Blue_headed_Vireo

59

153-Philadelphia_Vireo

70

154-Red_eyed_Vireo

76

155-Warbling_Vireo

55

156-White_eyed_Vireo

90

157-Yellow_throated_Vireo

72

158-Bay_breasted_Warbler

100

159-Black_and_white_Warbler

99

160-Black_throated_Blue_Warbler

91

161-Blue_winged_Warbler

92

162-Canada_Warbler

91

163-Cape_May_Warbler

87

164-Cerulean_Warbler

88

165-Chestnut_sided_Warbler

82

166-Golden_winged_Warbler

100

167-Hooded_Warbler

86

168-Kentucky_Warbler

98

169-Magnolia_Warbler

97

170-Mourning_Warbler

91

171-Myrtle_Warbler

100

172-Nashville_Warbler

79

173-Orange_crowned_Warbler

48

174-Palm_Warbler

72

175-Pine_Warbler

80

176-Prairie_Warbler

87

177-Prothonotary_Warbler

100

178-Swainson_Warbler

89

179-Tennessee_Warbler

72

180-Wilson_Warbler

94

181-Worm_eating_Warbler

89

182-Yellow_Warbler

97

183-Northern_Waterthrush

90

184-Louisiana_Waterthrush

73

185-Bohemian_Waxwing

98

186-Cedar_Waxwing

97

187-American_Three_toed_Woodpecker

100

188-Pileated_Woodpecker

100

189-Red_bellied_Woodpecker

91

190-Red_cockaded_Woodpecker

100

191-Red_headed_Woodpecker

100

192-Downy_Woodpecker

100

193-Bewick_Wren

72

194-Cactus_Wren

94

195-Carolina_Wren

93

196-House_Wren

52

197-Marsh_Wren

82

198-Rock_Wren

95

199-Winter_Wren

88

200-Common_Yellowthroat

100

【部分实现源码】

class Ui_MainWindow(QtWidgets.QMainWindow):
    signal = QtCore.pyqtSignal(str, str)
 
    def setupUi(self):
        self.setObjectName("MainWindow")
        self.resize(1280, 728)
        self.centralwidget = QtWidgets.QWidget(self)
        self.centralwidget.setObjectName("centralwidget")
 
        self.weights_dir = './weights'
 
        self.picture = QtWidgets.QLabel(self.centralwidget)
        self.picture.setGeometry(QtCore.QRect(260, 10, 1010, 630))
        self.picture.setStyleSheet("background:black")
        self.picture.setObjectName("picture")
        self.picture.setScaledContents(True)
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(10, 10, 81, 21))
        self.label_2.setObjectName("label_2")
        self.cb_weights = QtWidgets.QComboBox(self.centralwidget)
        self.cb_weights.setGeometry(QtCore.QRect(10, 40, 241, 21))
        self.cb_weights.setObjectName("cb_weights")
        self.cb_weights.currentIndexChanged.connect(self.cb_weights_changed)
 
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(10, 70, 72, 21))
        self.label_3.setObjectName("label_3")
        self.hs_conf = QtWidgets.QSlider(self.centralwidget)
        self.hs_conf.setGeometry(QtCore.QRect(10, 100, 181, 22))
        self.hs_conf.setProperty("value", 25)
        self.hs_conf.setOrientation(QtCore.Qt.Horizontal)
        self.hs_conf.setObjectName("hs_conf")
        self.hs_conf.valueChanged.connect(self.conf_change)
        self.dsb_conf = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.dsb_conf.setGeometry(QtCore.QRect(200, 100, 51, 22))
        self.dsb_conf.setMaximum(1.0)
        self.dsb_conf.setSingleStep(0.01)
        self.dsb_conf.setProperty("value", 0.25)
        self.dsb_conf.setObjectName("dsb_conf")
        self.dsb_conf.valueChanged.connect(self.dsb_conf_change)
        self.dsb_iou = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.dsb_iou.setGeometry(QtCore.QRect(200, 160, 51, 22))
        self.dsb_iou.setMaximum(1.0)
        self.dsb_iou.setSingleStep(0.01)
        self.dsb_iou.setProperty("value", 0.45)
        self.dsb_iou.setObjectName("dsb_iou")
        self.dsb_iou.valueChanged.connect(self.dsb_iou_change)
        self.hs_iou = QtWidgets.QSlider(self.centralwidget)
        self.hs_iou.setGeometry(QtCore.QRect(10, 160, 181, 22))
        self.hs_iou.setProperty("value", 45)
        self.hs_iou.setOrientation(QtCore.Qt.Horizontal)
        self.hs_iou.setObjectName("hs_iou")
        self.hs_iou.valueChanged.connect(self.iou_change)
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(10, 130, 72, 21))
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(10, 210, 72, 21))
        self.label_5.setObjectName("label_5")
        self.le_res = QtWidgets.QTextEdit(self.centralwidget)
        self.le_res.setGeometry(QtCore.QRect(10, 240, 241, 400))
        self.le_res.setObjectName("le_res")
        self.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(self)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1110, 30))
        self.menubar.setObjectName("menubar")
        self.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(self)
        self.statusbar.setObjectName("statusbar")
        self.setStatusBar(self.statusbar)
        self.toolBar = QtWidgets.QToolBar(self)
        self.toolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.toolBar.setObjectName("toolBar")
        self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
        self.actionopenpic = QtWidgets.QAction(self)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/images/1.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionopenpic.setIcon(icon)
        self.actionopenpic.setObjectName("actionopenpic")
        self.actionopenpic.triggered.connect(self.open_image)
        self.action = QtWidgets.QAction(self)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/images/2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action.setIcon(icon1)
        self.action.setObjectName("action")
        self.action.triggered.connect(self.open_video)
        self.action_2 = QtWidgets.QAction(self)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/images/3.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_2.setIcon(icon2)
        self.action_2.setObjectName("action_2")
        self.action_2.triggered.connect(self.open_camera)
 
        self.actionexit = QtWidgets.QAction(self)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/images/4.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionexit.setIcon(icon3)
        self.actionexit.setObjectName("actionexit")
        self.actionexit.triggered.connect(self.exit)
 
        self.toolBar.addAction(self.actionopenpic)
        self.toolBar.addAction(self.action)
        self.toolBar.addAction(self.action_2)
        self.toolBar.addAction(self.actionexit)
 
        self.retranslateUi()
        QtCore.QMetaObject.connectSlotsByName(self)
        self.init_all()

【使用步骤】

使用步骤:
(1)首先根据官方框架https://github.com/ultralytics/ultralytics安装教程安装好yolov8环境,并安装好pyqt5
(2)切换到自己安装的yolov8环境后,并切换到源码目录,执行python main.py即可运行启动界面,进行相应的操作即可

【提供文件】

python源码
yolov8n.onnx模型(不提供pytorch模型)
训练的map,P,R曲线图(在weights\results.png)
测试图片(在test_img文件夹下面)

【源码下载地址】

https://download.csdn.net/download/FL1623863129/89831493

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2194913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果电脑磁盘满了怎么清理内存?必看清理秘籍

对于很多Mac用户来说,随着时间的推移,电脑逐渐变慢并出现磁盘空间不足的提示是一件非常头疼的事情。正确理解内存和存储的区别,并采用有效的清理方法,对于保持Mac性能至关重要。本文将深入探讨如何有效清理Mac上的磁盘空间&#x…

一文看懂计算机中的大小端(Endianess)

文章目录 前言一、什么是大小端二、如何判断大小端三、大小端的转换3.1 使用标准库函数3.2 手动实现大小端转换 前言 本文主要探讨计算机中大小端的相关概念以及如何进行大小端的判断和转换等。 一、什么是大小端 大小端(Endianess)是指计算机系统在存…

CentOS7安装宝塔

第一步:安装 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh安装成功后会弹出这个页面 那么下次怎样再次打开这个页面呢? 输入这个: /etc/init.d/bt default…

YOLO v1详解解读

🚀 在此之前主要介绍了YOLO v5源码的安装和使用(YOLO v5安装教程),接下来将探索YOLO的实现原理,作为一个金典的单阶段目标检测算法,应该深度的理解它的构建思想;所以本系列文章将从LOVO v1出发到…

JavaEE: 深入解析HTTP协议的奥秘(1)

文章目录 HTTPHTTP 是什么HTTP 协议抓包fiddle 用法 HTTP 请求响应基本格式 HTTP HTTP 是什么 HTTP 全称为"超文本传输协议". HTTP不仅仅能传输文本,还能传输图片,传输音频文件,传输其他的各种数据. 因此它广泛应用在日常开发的各种场景中. HTTP 往往是基于传输层的…

PCIe配置篇(0)——地址空间

一、地址空间回顾 在最开始,我们先来回顾一下PCIe的一些基本概念,首先,PCIe是PCI的延伸,全名叫 Peripheral Component Interface Express。从名字就能看出,这是一种外设总线协议。在整个系统中,外设只是其中…

算法与程序课程设计——观光铁路

观光铁路 一、任务 跳蚤国正在大力发展旅游业,每个城市都被打造成了旅游景点。 许多跳蚤想去其他城市旅游,但是由于跳得比较慢,它们的愿望难以实现。这时,小C听说有一种叫做火车的交通工具,在铁路上跑得很快&#x…

C语言基础(10)之指针(2)

在上一篇文章中我们谈到了指针,并给老铁们讲解了什么是指针、指针类型、野指针以及指针运算等知识。在这篇文章中小编将继续带大家了解指针的相关知识点。 1. 指针和数组 指针和数组之间又能有什么联系呢?在谈这个之前,我们先来讲讲指针和数…

深入分析——为什么未初始化的全局变量是零?

1、前言 #include <stdio.h>int temp;int main(void) {//打印temp的值是零printf("temp%d\n", temp);return 0; }在C语言编程中&#xff0c;我们默认未初始化的全局变量、静态局部变量的初始化值都是零&#xff0c;底层原理如下 未初始化的全局变量、静态局部…

揭秘AI写作工具:如何改变内容创作新格局

小伙伴们&#xff0c;今儿咱们来聊聊那些个让人眼前一亮、脑洞大开的AI写作神器——笔灵AI写作、宙语AI写作、博思白板AI写作&#xff0c;还有讯飞星火&#xff0c;它们啊&#xff0c;简直就是文案人儿的超级辅助&#xff0c;让咱们写东西的时候&#xff0c;灵感嗖嗖地往外冒&a…

TinyOS -数据发布实验

文章目录 简介分析 简介 分发协议主要用于维护网络共享配置的一致性&#xff0c;这里的共享配置可以是节点传感器采样的周期、节点LPL醒睡的周期或者节点运行程序的映像等。每个节点都会维护一份这样的配置&#xff0c;分发协议负责通知每个节点这些配置的改变&#xff0c;并通…

国产分布式数据库开启新篇章!详解安全可靠测评结果公告(2024年第2号)

重磅消息&#xff01;2024年的安全可靠测评结果&#xff08;数据库篇&#xff09;终于揭晓了&#xff01;&#x1f680; 9月30日&#xff0c;国庆前夕&#xff0c;中国信息安全测评中心和国家保密科技测评中心联合发布了今年第二号测评结果&#xff0c;这份名单有效期三年&…

大数据新视界 --大数据大厂之大数据驱动智能客服 -- 提升客户体验的核心动力

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

MATLAB与R语言在建模中的合作与应用(下篇)

目录 目录 模型训练的协同使用 1. 使用 R 语言进行统计建模 2. 使用 MATLAB 进行机器学习建模 模型评估与调优 1. 在 R 中评估模型性能 2. 在 MATLAB 中进行模型优化 实战示例&#xff1a;MATLAB 与 R 的协同建模 总结 在上篇文章中&#xff0c;我们介绍了 MATLAB 和 R…

打工人狂喜,轻松定时发圈

自动定时发圈软件有哪些优势&#xff1f; 1、不用下载安装软件 2、不需要绑定手机或电脑 3、不对电脑或手机做限制 4、不越狱不刷机 5、能更新迭代 6、有售后服务 7、使用安全登录&#xff0c;保障账号安全的 8、不用去做独立部署&#xff08;可以选择&#xff09; 9、…

class 032 位图

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. 左程云的个人空间-左程云个人主页-哔哩哔哩视频…

重生之我们在ES顶端相遇第 20 章 - Mapping 参数设置大全(进阶)

文章目录 0. 前言1. 前置知识 - _source2. copy_to3. doc_values4. index5. enabled6. normalizer7. null_value8. 总结 0. 前言 在基础篇&#xff0c;我们只介绍了索引 Mapping 的基本用法。 本章将深入探讨日常中较经常使用的 Mapping 其他参数配置。 不想看过程&#xff0c…

Qt 实现动态时钟

1.实现效果 2.widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace

陪护小程序|护理陪护系统|陪护小程序成品

智能化&#xff0c;作为智慧医疗宏伟蓝图的基石&#xff0c;正引领着一场医疗服务的深刻变革。在这场变革的浪潮中&#xff0c;智慧医院小程序犹如璀璨新星&#xff0c;迅速崛起&#xff0c;而陪护小程序的诞生&#xff0c;更是如春风化雨&#xff0c;细腻地触及了老年病患、家…

Spring Cloud Netflix Ribbon 负载均衡详解和案例示范

1. 引言 在传统的集中式架构中&#xff0c;负载均衡器一般是放置在服务器端的&#xff0c;例如 Nginx等。随着微服务架构的兴起&#xff0c;服务实例的数量和部署地点变得更加动态和分布式&#xff0c;这使得在客户端进行负载均衡成为了一种可行且更灵活的方案。Netflix Ribbo…