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

自做网站视频/百度 营销中心

自做网站视频,百度 营销中心,新手做网站看什么书,做网站报价单大家好,YOLO(You Only Look Once) 是由Joseph Redmon和Ali开发的一种对象检测和图像分割模型。 YOLO的第一个版本于2015年发布,由于其高速度和准确性,瞬间得到了广大AI爱好者的喜爱。 Ultralytics YOLOv8则是一款前沿、最先进(SOTA)的模型&a…

大家好,YOLO(You Only Look Once) 是由Joseph Redmon和Ali开发的一种对象检测和图像分割模型。

YOLO的第一个版本于2015年发布,由于其高速度和准确性,瞬间得到了广大AI爱好者的喜爱。

Ultralytics YOLOv8则是一款前沿、最先进(SOTA)的模型,基于先前YOLO版本的成功,引入了新功能和改进,进一步提升性能和灵活性。

YOLOv8设计快速、准确且易于使用,使其成为各种物体检测与跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。

项目地址:

https://github.com/ultralytics/ultralytics

其中官方提供了示例,通过Python代码即可实现YOLOv8对象检测算法模型,使用预训练模型来检测我们的目标。而且对电脑需求也不高,CPU就能运行代码

今天我就给大家介绍三个使用YOLOv8制作的计数器,非常实用。使用到Python版本以及相关Python库。

Python 3.9.7  
ultralytics 8.0.178  
opencv-contrib-python 4.8.1.78  
opencv-python 4.8.0.74  
cvzone 1.5.6

技术交流群

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

建了技术交流群&星球!想要本文源码、进交流群的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司,即可。然后就可以拉你进群了。

方式①、添加微信号:mlc2060,备注:技术交流
方式②、微信搜索公众号:机器学习社区,后台回复:技术交流

/ 01 /

客流检测器

使用OpenCV检测顾客,并且设定客人进出区域,实现实时计算进出顾客的数量。

客流量统计对于零售行业来说是非常重要的。

统计每天的进出店人数、过店人数以及人均驻留时间等。

依据这些数据,经营者可以对店铺的经营策略进行调整,实现店铺的经营效益最大化。

接下来就来看一下客流计数器的检测代码吧!

import cv2  
import numpy as np  
from tracker import \*  
import cvzone  
import time  bg\_subtractor = cv2.createBackgroundSubtractorMOG2(history=200, varThreshold=140)  # 打开视频  
video\_capture = cv2.VideoCapture(r"store.mp4")  def RGB(event, x, y, flags, param):  if event == cv2.EVENT\_MOUSEMOVE:  point = \[x, y\]  print(point)  cv2.namedWindow('RGB')  
cv2.setMouseCallback('RGB', RGB)  
tracker = Tracker()  area1 = \[(213, 165), (200, 189), (693, 373), (697, 341)\]  
area2 = \[(195, 199), (186, 213), (683, 404), (689, 388)\]  
er = {}  
counter1 = \[\]  
ex = {}  
counter2 = \[\]  
while True:  ret, frame = video\_capture.read()  if not ret:  break  frame = cv2.resize(frame, (1028, 500))  mask = bg\_subtractor.apply(frame)  \_, mask = cv2.threshold(mask, 245, 255, cv2.THRESH\_BINARY)  contours, \_ = cv2.findContours(mask, cv2.RETR\_EXTERNAL, cv2.CHAIN\_APPROX\_SIMPLE)  list = \[\]  for cnt in contours:  area = cv2.contourArea(cnt)  if area > 1500:  # cv2.drawContours(frame, \[cnt\], -1, (0, 255, 0), 2)  x, y, w, h = cv2.boundingRect(cnt)  list.append(\[x, y, w, h\])  bbox\_idx = tracker.update(list)  for bbox in bbox\_idx:  x1, y1, x2, y2, id = bbox  cx = int(x1 + x1 + x2) // 2  cy = int(y1 + y1 + y2) // 2  result = cv2.pointPolygonTest(np.array(area1, np.int32), ((cx, cy)), False)  if result >= 0:  er\[id\] = (cx, cy)  if id in er:  result1 = cv2.pointPolygonTest(np.array(area2, np.int32), ((cx, cy)), False)  if result1 >= 0:  cv2.rectangle(frame, (x1, y1), (x2 + x1, y2 + y1), (0, 255, 0), 3)  cvzone.putTextRect(frame, f'{id}', (cx, cy), 2, 2)  cv2.circle(frame, (cx, cy), 5, (0, 255, 0), \-1)  if counter1.count(id) == 0:  counter1.append(id)  result2 = cv2.pointPolygonTest(np.array(area2, np.int32), ((cx, cy)), False)  if result2 >= 0:  ex\[id\] = (cx, cy)  if id in ex:  result3 = cv2.pointPolygonTest(np.array(area1, np.int32), ((cx, cy)), False)  if result3 >= 0:  cv2.rectangle(frame, (x1, y1), (x2 + x1, y2 + y1), (0, 0, 255), 3)  cvzone.putTextRect(frame, f'{id}', (cx, cy), 2, 2)  cv2.circle(frame, (cx, cy), 5, (0, 255, 0), \-1)  if counter2.count(id) == 0:  counter2.append(id)  cv2.polylines(frame, \[np.array(area1, np.int32)\], True, (0, 0, 255), 2)  cv2.polylines(frame, \[np.array(area2, np.int32)\], True, (0, 0, 255), 2)  Enter = len(counter1)  Exit = len(counter2)  cvzone.putTextRect(frame, f'ENTER:-{Enter}', (50, 60), 2, 2)  cvzone.putTextRect(frame, f'EXIT:-{Exit}', (50, 130), 2, 2)  cv2.imshow('RGB', frame)  time.sleep(0.01)  if cv2.waitKey(1) & 0xFF == 27:  # Press 'Esc' to exit  break  # 释放资源, 关闭窗口  
video\_capture.release()  
cv2.destroyAllWindows()

结果如下。

/ 02 /

鸡蛋计数器

使用OpenCV和YOLOv8检测鸡蛋个数。

能够高效、准确、安全可靠的完成鸡蛋个数的统计工作。

基于yolov8-seg实例分割的实时检测。

具体代码如下。

import cv2  
from yolo\_segmentation import YOLOSEG  
import cvzone  
from tracker import \*  
import numpy as np  ys = YOLOSEG("best.pt")  my\_file = open("coco1.txt", "r")  
data = my\_file.read()  
class\_list = data.split("\\n")  cap = cv2.VideoCapture('egg.mp4')  
count = 0  def RGB(event, x, y, flags, param):  if event == cv2.EVENT\_MOUSEMOVE:  point = \[x, y\]  print(point)  cv2.namedWindow('RGB')  
cv2.setMouseCallback('RGB', RGB)  
tracker = Tracker()  
area = \[(434, 39), (453, 629), (473, 634), (456, 36)\]  
counter1 = \[\]  
while True:  ret, frame = cap.read()  if not ret:  break  frame = cv2.resize(frame, (1020, 700))  overlay = frame.copy()  alpha = 0.5  bboxes, classes, segmentations, scores = ys.detect(frame)  bbox\_idx = tracker.update(bboxes)  for bbox, seg in zip(bbox\_idx, segmentations):  x3, y3, x4, y4, id = bbox  cx = int(x3 + x4) // 2  cy = int(y3 + y4) // 2  result = cv2.pointPolygonTest(np.array(area, np.int32), ((cx, cy)), False)  if result >= 0:  #       cv2.rectangle(frame, (x3, y3), (x4, y4), (255, 0, 0), 2)  #           cv2.polylines(frame, \[seg\], True, (0, 0, 255), 4)  cv2.circle(frame, (cx, cy), 4, (0, 255, 0), \-1)  cv2.fillPoly(overlay, \[seg\], (0, 0, 255))  cv2.addWeighted(overlay, alpha, frame, 1 - alpha, 2, frame)  cvzone.putTextRect(frame, f'{id}', (x3, y3), 1, 1)  if counter1.count(id) == 0:  counter1.append(id)  cv2.polylines(frame, \[np.array(area, np.int32)\], True, (255, 0, 0), 2)  ca1 = len(counter1)  cvzone.putTextRect(frame, f'Egg: {ca1}', (50, 60), 2, 2)  cv2.imshow("RGB", frame)  if cv2.waitKey(1) & 0xFF == 27:  break  
cap.release()  
cv2.destroyAllWindows()

运行代码,结果如下。

/ 03 /

停车位计数器

使用OpenCV和YOLOv8检测停车场剩余车位。

提醒车主停车场各个区域的剩余车位信息。

使停车场车位管理更加规范有序,提高车位使用率。

import cv2  
import pandas as pd  
import numpy as np  
from ultralytics import YOLO  
import time  model = YOLO('yolov8s.pt')  def RGB(event, x, y, flags, param):  if event == cv2.EVENT\_MOUSEMOVE:  colorsBGR = \[x, y\]  print(colorsBGR)  cv2.namedWindow('RGB')  
cv2.setMouseCallback('RGB', RGB)  cap = cv2.VideoCapture('parking1.mp4')  my\_file = open("coco.txt", "r")  
data = my\_file.read()  
class\_list = data.split("\\n")  area1 = \[(52, 364), (30, 417), (73, 412), (88, 369)\]  area2 = \[(105, 353), (86, 428), (137, 427), (146, 358)\]  area3 = \[(159, 354), (150, 427), (204, 425), (203, 353)\]  area4 = \[(217, 352), (219, 422), (273, 418), (261, 347)\]  area5 = \[(274, 345), (286, 417), (338, 415), (321, 345)\]  area6 = \[(336, 343), (357, 410), (409, 408), (382, 340)\]  area7 = \[(396, 338), (426, 404), (479, 399), (439, 334)\]  area8 = \[(458, 333), (494, 397), (543, 390), (495, 330)\]  area9 = \[(511, 327), (557, 388), (603, 383), (549, 324)\]  area10 = \[(564, 323), (615, 381), (654, 372), (596, 315)\]  area11 = \[(616, 316), (666, 369), (703, 363), (642, 312)\]  area12 = \[(674, 311), (730, 360), (764, 355), (707, 308)\]  while True:  ret, frame = cap.read()  if not ret:  break  time.sleep(1)  frame = cv2.resize(frame, (1020, 500))  results = model.predict(frame)  #   print(results)  a = results\[0\].boxes.boxes  px = pd.DataFrame(a).astype("float")  #    print(px)  list1 = \[\]  list2 = \[\]  list3 = \[\]  list4 = \[\]  list5 = \[\]  list6 = \[\]  list7 = \[\]  list8 = \[\]  list9 = \[\]  list10 = \[\]  list11 = \[\]  list12 = \[\]  for index, row in px.iterrows():  #        print(row)  x1 = int(row\[0\])  y1 = int(row\[1\])  x2 = int(row\[2\])  y2 = int(row\[3\])  d = int(row\[5\])  c = class\_list\[d\]  if 'car' in c:  cx = int(x1 + x2) // 2  cy = int(y1 + y2) // 2  results1 = cv2.pointPolygonTest(np.array(area1, np.int32), ((cx, cy)), False)  if results1 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list1.append(c)  cv2.putText(frame, str(c), (x1, y1), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  results2 = cv2.pointPolygonTest(np.array(area2, np.int32), ((cx, cy)), False)  if results2 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list2.append(c)  results3 = cv2.pointPolygonTest(np.array(area3, np.int32), ((cx, cy)), False)  if results3 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list3.append(c)  results4 = cv2.pointPolygonTest(np.array(area4, np.int32), ((cx, cy)), False)  if results4 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list4.append(c)  results5 = cv2.pointPolygonTest(np.array(area5, np.int32), ((cx, cy)), False)  if results5 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list5.append(c)  results6 = cv2.pointPolygonTest(np.array(area6, np.int32), ((cx, cy)), False)  if results6 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list6.append(c)  results7 = cv2.pointPolygonTest(np.array(area7, np.int32), ((cx, cy)), False)  if results7 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list7.append(c)  results8 = cv2.pointPolygonTest(np.array(area8, np.int32), ((cx, cy)), False)  if results8 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list8.append(c)  results9 = cv2.pointPolygonTest(np.array(area9, np.int32), ((cx, cy)), False)  if results9 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list9.append(c)  results10 = cv2.pointPolygonTest(np.array(area10, np.int32), ((cx, cy)), False)  if results10 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list10.append(c)  results11 = cv2.pointPolygonTest(np.array(area11, np.int32), ((cx, cy)), False)  if results11 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list11.append(c)  results12 = cv2.pointPolygonTest(np.array(area12, np.int32), ((cx, cy)), False)  if results12 >= 0:  cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)  cv2.circle(frame, (cx, cy), 3, (0, 0, 255), \-1)  list12.append(c)  a1 = (len(list1))  a2 = (len(list2))  a3 = (len(list3))  a4 = (len(list4))  a5 = (len(list5))  a6 = (len(list6))  a7 = (len(list7))  a8 = (len(list8))  a9 = (len(list9))  a10 = (len(list10))  a11 = (len(list11))  a12 = (len(list12))  o = (a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12)  space = (12 - o)  print(space)  if a1 == 1:  cv2.polylines(frame, \[np.array(area1, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('1'), (50, 441), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area1, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('1'), (50, 441), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  if a2 == 1:  cv2.polylines(frame, \[np.array(area2, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('2'), (106, 440), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area2, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('2'), (106, 440), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  if a3 == 1:  cv2.polylines(frame, \[np.array(area3, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('3'), (175, 436), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area3, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('3'), (175, 436), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  if a4 == 1:  cv2.polylines(frame, \[np.array(area4, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('4'), (250, 436), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area4, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('4'), (250, 436), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  if a5 == 1:  cv2.polylines(frame, \[np.array(area5, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('5'), (315, 429), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area5, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('5'), (315, 429), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  if a6 == 1:  cv2.polylines(frame, \[np.array(area6, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('6'), (386, 421), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area6, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('6'), (386, 421), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  if a7 == 1:  cv2.polylines(frame, \[np.array(area7, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('7'), (456, 414), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area7, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('7'), (456, 414), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  if a8 == 1:  cv2.polylines(frame, \[np.array(area8, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('8'), (527, 406), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area8, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('8'), (527, 406), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  if a9 == 1:  cv2.polylines(frame, \[np.array(area9, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('9'), (591, 398), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area9, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('9'), (591, 398), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  if a10 == 1:  cv2.polylines(frame, \[np.array(area10, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('10'), (649, 384), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area10, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('10'), (649, 384), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  if a11 == 1:  cv2.polylines(frame, \[np.array(area11, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('11'), (697, 377), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area11, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('11'), (697, 377), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  if a12 == 1:  cv2.polylines(frame, \[np.array(area12, np.int32)\], True, (0, 0, 255), 2)  cv2.putText(frame, str('12'), (752, 371), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (0, 0, 255), 1)  else:  cv2.polylines(frame, \[np.array(area12, np.int32)\], True, (0, 255, 0), 2)  cv2.putText(frame, str('12'), (752, 371), cv2.FONT\_HERSHEY\_COMPLEX, 0.5, (255, 255, 255), 1)  cv2.putText(frame, 'parking lots: ' + str(space), (23, 40), cv2.FONT\_HERSHEY\_PLAIN, 2, (255, 0, 255), 2)  cv2.imshow("RGB", frame)  if cv2.waitKey(1) & 0xFF == 27:  break  
cap.release()  
cv2.destroyAllWindows()  
# stream.stop()

运行代码,结果如下。

发现效果还不错~

/ 04 /

总结

以上操作,就是三个使用YOLOv8实现的计数视觉项目

当然我们还可以通过预训练模型实现其它功能。

如果预训练模型的检测效果在你要使用的场景不太好,那就是需要加加数据了~

相关文章:

基于yolov8,制作停车位计数器(附源码)

大家好,YOLO(You Only Look Once) 是由Joseph Redmon和Ali开发的一种对象检测和图像分割模型。 YOLO的第一个版本于2015年发布,由于其高速度和准确性,瞬间得到了广大AI爱好者的喜爱。 Ultralytics YOLOv8则是一款前沿、最先进(SOTA)的模型&a…...

C++设计模式:单例模式(饿汉式、懒汉式)

单例模式是什么? 单例模式是一种创建型的软件设计模式。通过单例模式的设计,使得创建的类在当前进程中只有唯一一个实例,并提供一个全局性的访问点,这样可以规避因频繁创建对象而导致的内存飙升情况。 单例模式有三个要点 私有化…...

Django 访问前端页面一直在转异常:ReferenceError:axios is not defined

访问&#xff1a;http://127.0.0.1:8080/ my.html 一、异常&#xff1a; 二、原因 提示&#xff1a;axios找不到&#xff01;&#xff01; 查看代码<script src"https://unpkg.com/axios/dist/axios.min.js"></script>无法访问到官网 三、解决 Using j…...

C语言中关于指针的理解

#include <stdio.h> int main() {int a11;int *p&a; //因为a是整型的&#xff0c;所以我们定义指针p的时候要和a的类型一样char b;char *pa&b; //同理&#xff0c;b是字符型&#xff0c;所以这里的pa也要用字符型return 0; }因为*p指向的是地址&…...

MySQL MVCC精讲

版本链 我们前面说过&#xff0c;对于使用InnoDB存储引擎的表来说&#xff0c;它的聚簇索引记录中都包含两个必要的隐藏列&#xff08;row_id并不是必要的&#xff0c;我们创建的表中有主键或者非NULL的UNIQUE键时都不会包含row_id列&#xff09;&#xff1a; trx_id&#xff…...

如何快速删除pdf周围的空白

问题&#xff1a;写论文往往需要pdf格式的图片&#xff0c;但pdf往往四周存在大量空白需要手动截图很麻烦 解决&#xff1a; 打开命令行输入&#xff1a;pdfcrop 图片名.pdf...

蓝桥杯c/c++程序设计——数位排序

数位排序【第十三届】【省赛】【C组】 题目描述 小蓝对一个数的数位之和很感兴趣&#xff0c;今天他要按照数位之和给数排序。 当两个数各个数位之和不同时&#xff0c;将数位和较小的排在前面&#xff0c;当数位之和相等时&#xff0c;将数值小的排在前面。 例如&#xff0…...

【通讯录案例-搭建登录界面 Objective-C语言】

一、来看我们这个通讯录案例 1.接下来啊,我们来做这个通讯录案例, 然后呢,做这么一个应用程序啊, 我们第一步呢,先把界面儿搭了, 然后呢,搭之前,简单的来分析一下, 首先呢,这是,中间儿的这一块儿, 1)有个“账户”、“密码”,这一块儿, 这是一个什么控制器,…...

二叉搜索树、AVL、红黑树、B树

文章目录 二叉搜索树2. avl树3. 红黑树 b树和b树比较适合与磁盘打交道的&#xff0c;磁盘操作耗时&#xff0c;这些树 矮&#xff0c;红黑树、avL树高&#xff0c;比较适合与内存打交道。 二叉搜索树 找一个节点的前驱和后继&#xff1a; 前驱&#xff1a;如果节点有左子树&a…...

格密码:傅里叶矩阵

目录 一. 铺垫性介绍 1.1 傅里叶级数 1.2 傅里叶矩阵的来源 二. 格基与傅里叶矩阵 2.1 傅里叶矩阵详细解释 2.2 格基与傅里叶矩阵 写在前面&#xff1a;有关傅里叶变换的解释太多了&#xff0c;这篇博客主要总结傅里叶矩阵在格密码中的运用。对于有一定傅里叶变换基础的同…...

flex--伸缩性

1.flex-basis flex-basis 设置的是主轴方向的基准长度&#xff0c;会让宽度或高度失效。 备注&#xff1a;主轴横向&#xff1a;宽度失效&#xff1b;主轴纵向&#xff1a;高度失效 作用&#xff1a;浏览器根据这个属性设置的值&#xff0c;计算主轴上是否有多余空间&#x…...

linux中主从复制的架构和读写分离的方式

读写分离 互相主从架构注意点 双主双从架构注意点 一主多从架构注意点 读写分离概念部署jdk环境上传文件&#xff0c;解压文件配置环境变量 部署mycat环境mycat配置文件给所有数据库创建访问用户配置 server.xml配置 schema.xml启动mycat查看启动端口日志负载均衡测试 遇到的问…...

Ubuntu 22.04.3 Server 设置静态IP 通过修改yaml配置文件方法

目录 1.查看网卡信息 2.修改yaml配置文件 3.应用新的网络配置 4.重新启动网络服务 文章内容 本文介绍Ubuntu 22.04.3 Server系统通过修改yaml配置文件配置静态 ip 的方法。 1.查看网卡信息 使用ifconfig命令查看网卡信息获取网卡名称​ 如果出现Command ifconfig not fo…...

EasyCVR无人机推流+人数统计AI算法,助力公共场所人群密度管控

一、背景与需求 在公共场所和大型活动的管理中&#xff0c;人数统计和人群密度控制是非常重要的安全问题。传统的方法可能存在效率低下或准确度不足的情况&#xff0c;无法满足现代社会的需求。TSINGSEE青犀可以利用无人机推流AI人流量统计算法&#xff0c;基于计算机视觉技术…...

Kotlin 接口

Kotlin 的接口可以既包含抽象方法的声明也包含实现&#xff1b;接口无法保存状态&#xff1b;可以有属性但必须声明为抽象或提供访问器实现 1、定义 使用关键字 interface 来定义接口 interface MyInterface {fun bar()fun foo() {// 可选的方法体} } 2、 实现接口 一个类…...

Qt前端技术:5.QSS

这个是表示QFrame中的pushButton中的子类和它子类的子类都将背景变为red 写成大于的时候表示只有直接的子类对象才会变 这个图中的QGroupBox和QPushButton都是QFrame的直接的子类 这个中的QGroupBox是QFrame的直接的子类但是QPushButton 是QGroupBox的子类&#xff0c;QPushB…...

在Centos7中利用Shell脚本:实现MySQL的数据备份

目录 自动化备份MySQL 一.备份数据库脚本 1.创建备份目录 2.创建脚本文件 3.新建配置文件&#xff08;连接数据库的配置文件&#xff09; 4.给文件权限(mysql_backup.sh) ​编辑 5.执行命令 (mysql_backup.sh) ​编辑 二.数据库通过备份恢复 1.创建脚…...

大一C语言查缺补漏 12.24

遗留问题&#xff1a; 6-1 1 在C语言中&#xff0c;如果要保留小数的话&#xff0c;一定要除以2.0&#xff0c;而不是2。 设整型变量m,n,a,b的值均为1&#xff0c;执行表达式&#xff08;m a>b&#xff09;||(n a<b)后&#xff0c;表达式的值以及变量m和n的值是&#…...

程序员宝典:常用的免费好物API

六位图片验证码生成&#xff1a;包括纯数字、小写字母、大写字母、大小写混合、数字小写、数字大写、数字大小写等情况。 四位图片验证码生成&#xff1a;四位图片验证码生成&#xff0c;包括纯数字、小写字母、大写字母、大小写混合、数字小写、数字大写、数字大小写等情况。…...

关于“Python”的核心知识点整理大全41

目录 scoreboard.py game_functions.py game_functions.py 14.3.8 显示等级 game_stats.py scoreboard.py scoreboard.py scoreboard.py game_functions.py game_functions.py alien_invasion.py 14.3.9 显示余下的飞船数 ship.py scoreboard.py 我们将最高得分圆整…...

java进阶(二)-java小干货

java一些精干知识点分享 2. java小干货2.1循环遍历2.2可变参数2.3 list和数组转化2.3.1 数组转list2.3.2 list转数组 2.4 值传递和地址传递2.4.1值传递2.4.2 地址传递2.4.3易错点总结 2.5 数据类型2.5.1基础知识2.5.2 基础数据和包装类 2.6 字符串2.6.1 char/String区别2.6.2 .…...

layui(iconPickerFa)图标选择器插件,主要用于后台菜单图标管理

话不多说直接上代码 在页面中引入如下代码 <link rel"stylesheet" href"/template/admin/layui-v2.5.6/css/layui.css"> <script type"text/javascript" src"/template/admin/layui-v2.5.6/layui.js"></script> &…...

RabbitMQ入门指南(九):消费者可靠性

专栏导航 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、消费者确认机制 二、失败重试机制 三、失败处理策略 四、业务幂等性 1.通过唯一标识符保证操作的幂等性 2.通过业务判断保证操作的幂等性 总结 前言 RabbitMQ是一个高效、可靠的开源消息队列系…...

MySQL的聚合函数、MySQL的联合查询、MySQL的左连接右连接内连接

MySQL的聚合函数 MySQL聚合函数是在数据库中对数据进行聚合操作的函数。它们将多行数据作为输入&#xff0c;并返回单个值作为结果。 常用的MySQL聚合函数包括&#xff1a; COUNT&#xff1a;计算符合条件的行数。SUM&#xff1a;对指定列的数值进行求和操作。AVG&#xff1…...

RKNN Toolkit Lite2 一键安装和测试,sh脚本

RKNN Toolkit Lite2 安装和测试教程 本教程旨在指导用户如何使用提供的shell脚本来安装和测试RKNN Toolkit Lite2&#xff0c;适用于需要在Linux系统上部署和测试AI模型的开发者。 简介 RKNN Toolkit Lite2是一个高效的AI模型转换和推理工具包&#xff0c;专为Rockchip NPU设…...

探索中国制造API接口:解锁无限商机,引领制造业数字化转型

一、概述 中国制造API接口是一种应用程序接口&#xff0c;专门为中国制造行业提供数据和服务。通过使用API接口&#xff0c;开发者可以轻松地获取中国制造的商品信息、供应商数据、生产能力等&#xff0c;从而为他们的应用程序或网站提供更加丰富的内容和功能。 二、API接口的…...

CentOS上安装MySQL 8.0的详细教程

CentOS上安装MySQL 8.0的详细教程 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我将为大家分享一篇关于在CentOS上安装MySQL 8.0的详细教程。MySQL是一个强大…...

[RISCV] 为android14添加一个新的riscv device

本篇博客将基于android-14-r18添加Sifive unmatched板子的支持。 Setup build envoronment Establishing a build environment $ sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 x11proto-core-dev libx11-de…...

【Fastadmin】通用排序weigh不执行model模型的事件

在model模型类支持的before_delete、after_delete、before_write、after_write、before_update、after_update、before_insert、after_insert事件行为中&#xff0c;我们可以快捷的做很多操作&#xff0c;如删除缓存、逻辑判断等 但是在fastadmin的通用排序weigh拖动中无法触发…...

logstash收集华为、H3C、Cisco交换机日志

网络设备配置 将 syslog-ip 替换成服务器的IP地址。 Huawei info-center loghost source interface info-center loghost syslog-ip local-time facility local6 H3C info-center loghost source interface info-center loghost syslog-ip facility local5 Aruba logging arm …...