最新要闻
- lol探险家带什么符文(lol探险家ez符文怎么搭配)
- Intel 14代酷睿笔记本榨干牙膏!8+16满血核心全线出击
- 未来属于HDMI还是DP接口?联想:恐怕都不是 而是Type-C
- AMD锐龙7000差点上昂贵的VC均热板!可惜 效果奇差无比
- 《王者荣耀》联名宝格丽!芈月璀璨新程皮肤公布:高贵女王
- 2023年全国残疾人游泳锦标赛落幕 安阳市运动员“泳”夺2金1银2铜
- 日本北海道砒霜泄露:最新监测发现已超标2100倍
- 多色可选:雪中飞男士冰丝薄款弹力牛仔裤29元抄底
- 8999元 戴尔新款37.5寸带鱼屏上市:支持IPS Black技术
- 马斯克开着Cybertruck兜风 答应网友加炮塔
- 特斯拉呼吁收紧史上最严排放标准 与传统车企“对着干”
- 大涨!光伏逆变器概念股风云再起,又将谁主沉浮?
- 1份价格2个会员!京东PLUS + 芒果TV会员年卡98元限时购
- 坦克300撞废逆行哈弗H6 长城回应:不能只看受损去判定谁更胜一筹
- 承认落后!奥迪被曝求助中国车企:将购买纯电平台 缩短研发时间
- OPPO官宣与理想合作:理想全系均支持手表无感车钥匙
手机

英国房地产因利率上升陷入困境 房价正以2011年来最快速度下跌

宁夏评选出上半年10名“宁夏好人” 95后消防员因敬业奉献入选
- 英国房地产因利率上升陷入困境 房价正以2011年来最快速度下跌
- 宁夏评选出上半年10名“宁夏好人” 95后消防员因敬业奉献入选
- 离婚时共同债务应该怎么处理?
- 华为云盘古大模型3.0正式发布
- 支持自动长文生成,WPS AI发布:基于大语言模型的智能办公助手
- 《街头霸王6》全球总销量突破200万份 卡普空再次为其玩家送上礼物
家电
opencv-python图像处理模块(一)
1 图像颜色空间转换
【资料图】
opencv提供了用于颜色空间转换的函数,用来适应在不同需求中的图像使用要求。 dst = cvtColor(img, mode) mode表示颜色空间转换方式(转换到RGB空间:COLOR_BGR2RGB;转换成灰度图片:COLOR_BGR2GRAY;转换到HSV空间:COLOR_BGR2HSV;转换到YUV空间:COLOR_BGR2YUV)
颜色空间转换代码如下:
import cv2import numpy as np #图片颜色空间转换cv2.namedWindow("color",cv2.WINDOW_NORMAL) #定义窗口cv2.resizeWindow("color",(640,480))img = cv2.imread("./cat.jpg")def callback(value): #回调函数 passcolor_space = [cv2.COLOR_BGR2BGRA, cv2.COLOR_BGR2RGB, cv2.COLOR_BGR2GRAY, cv2.COLOR_BGR2HSV,cv2.COLOR_BGR2YUV]cv2.createTrackbar("trackbar","color",0,4,callback) #创建进度条while True: index = cv2.getTrackbarPos("trackbar","color") #获取进度条数值 img2 = cv2.cvtColor(img,color_space[index]) #图片颜色空间转换 cv2.imshow("color",img2) key = cv2.waitKey(1) if key == ord("q"): breakcv2.destroyAllWindows()
除了最常用的RGB空间,HSV空间在有些时候也用的比较多,这里稍微介绍一下HSV空间,HSV即色相(Hue)、饱和度(Saturation)、亮度(Value)。HSV的颜色空间更符合人类对颜色的理解,人眼很难根据图像的rgb值推测出图像到底是什么颜色,但是可以根据hsv的值大致推测出图像的颜色,或者看到某一种颜色可以推测出对应的hsv值。
色调(H): 用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;在opencv中 取值范围是0-180。
饱和度(S)表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。在opencv中 取值范围是0-255。
亮度(V)表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。在opencv中 取值范围是0-255,事实上可以超过这个范围。
HSV柱状图如下:
常见颜色的大致hsv范围:
比如下图,狗的颜色大致是橙色,我希望通过颜色把狗单独提取出来。但是这个橙色不是确定的某一种颜色,而是一个范围,可以使用 OpenCV 的inRange函数来检测和提取图像中存在的颜色。具体是使用该函数来创建颜色掩码,mask = inRange(img,LowerBlue, UpperBlue) img表示待处理图像,LowerBlue表示低阈值范围,UpperBlue表示高阈值范围。inRange函数将颜色的值设置为 1,如果颜色存在于给定的颜色范围内,则设置为白色,如果颜色不存在于指定的颜色范围内,则设置为 0。
import cv2import numpy as np #根据颜色提取roi区域img = cv2.imread("./cat_dog.jpg")print(img.shape)mask = cv2.inRange(img,(70,90,160),(105,150,250)) #用inRange创建颜色掩膜dog = cv2.bitwise_and(img,img,mask=mask) #用掩膜与原图像与运算获取roi区域cv2.imshow("images",img)cv2.imshow("dog",dog)cv2.waitKey(0)cv2.destroyAllWindows()
直接用rgb空间来获取颜色掩膜非常困难,经过多次尝试也没法获得比较满意的效果,如果转换到hsv空间后效果会好很多,如下:
import cv2import numpy as np #转换到HSV根据颜色提取roi区域img = cv2.imread("./cat_dog.jpg")print(img.shape)HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)H, S, V = cv2.split(HSV)LowerBlue = np.array([0, 100, 150])UpperBlue = np.array([20, 160, 240])mask = cv2.inRange(HSV,LowerBlue,UpperBlue)#mask = cv2.inRange(img,(70,90,160),(105,150,225))print(HSV)dog = cv2.bitwise_and(img,img,mask=mask)cv2.imshow("images",img)cv2.imshow("dog",dog)cv2.waitKey(0)cv2.destroyAllWindows()
总体来说,效果还是很不错的,比rgb提取的效果好很多。
2 基本图形绘制
1)绘制标记
opencv中提供了用于绘制标记的函数drawMarker,可以使用该函数在图像上标记一个点。 dst = drawMarker(img, position, color, markerType=None, thickness=None) position表示标记绘制的位置,需要传入整型;color表示标记的绘制颜色;markerType表示标记绘制类型,thickness表示标记线的粗细。
import cv2import numpy as np #绘制标记 drawMarker(图像,位置,颜色,标志类型,标记线粗细)img = cv2.imread("./cat.jpg")draw_marker = cv2.drawMarker(img,(250,250),(255,0,0),cv2.MARKER_CROSS,thickness=3) #绘制十字架draw_marker = cv2.drawMarker(img,(50,50),(0,255,0),cv2.MARKER_STAR,thickness=3) #绘制星型draw_marker = cv2.drawMarker(img,(400,400),(0,0,255),cv2.MARKER_DIAMOND,thickness=3) #绘制菱形draw_marker = cv2.drawMarker(img,(50,400),(255,255,0),cv2.MARKER_SQUARE,thickness=3) #绘制长方形draw_marker = cv2.drawMarker(img,(400,50),(255,0,255),cv2.MARKER_TILTED_CROSS,thickness=3) #绘制x型print(img.shape)cv2.imshow("img",img)cv2.waitKey(0)cv2.destroyAllWindows()
2)绘制直线和矩形
opencv提供的直线绘制函数line,dst = line(ing,pt1,pt2,color,thickness=None,lineType=None) pt1表示绘制直线的第一个点,pt2表示第二个点;color表示绘制的直线颜色;thickness表示绘制直线的粗细;lineType表示绘制的线型。绘制矩形的函数为rectangle,dst = rectangle(img, pt1,pt2, color, thickness=None, lineType=None) pt1表示绘制矩形的顶点,pt2表示与pt1相对的顶点。
绘制的图形可以用窗口显示,也可以显示在图像上。
import cv2 #绘制直线,矩形#img = cv2.imread("./cat.jpg")img = np.zeros((414,500,3),np.uint8)draw_line1 = cv2.line(img,(50,50),(400,400),(0,0,255),thickness=3) #绘制直线draw_line2 = cv2.line(img,(50,400),(400,50),(0,0,255),thickness=3)draw_rectangle = cv2.rectangle(img,(50,50),(400,400),(255,0,0),thickness=3) #绘制矩形cv2.imshow("img",draw_line1) #此时的img和draw——line1,line2,rectangle是一样的了,相当于浅拷贝,共用一个内存cv2.waitKey(0)cv2.destroyAllWindows()
3)绘制圆和椭圆
opencv提供了用于绘制圆的函数时circle,dst = circle(img, center, radius, color, thickness=None, lineType=None) center表示圆心坐标,radius表示圆心半径。(注:thickness=-1的时候,绘制实心图形)
此外,opencv还提供了绘制椭圆的函数ellipse,dst = ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=None, lineType=None) center表示椭圆的圆心坐标,axes表示主轴尺寸的一半,angle表示椭圆旋转的角度,startAngle表示椭圆圆弧的起始角度,endAngle表示椭圆的终止角度(即可以只绘制椭圆的一部分)。
import cv2 #绘制圆,椭圆img = cv2.imread("./cat.jpg")img_copy =img.copy()draw_circle = cv2.circle(img,(300,200),150,(0,0,255),thickness=3)#绘制圆draw_marker = cv2.drawMarker(img,(300,200),(0,0,255),cv2.MARKER_CROSS,thickness=3) #标记圆心draw_ellipse = cv2.ellipse(img,(100,200),(100,50),90,0,360,(0,255,0),thickness=3) #绘制椭圆draw_marker = cv2.drawMarker(img,(100,200),(0,255,0),cv2.MARKER_CROSS,thickness=3) #标记椭圆圆心draw_ellipse = cv2.ellipse(img_copy,(100,200),(100,50),90,0,180,(0,255,0),thickness=3) #绘制半个椭圆draw_ellipse = cv2.ellipse(img_copy,(300,200),(100,100),180,0,180,(0,0,255),thickness=3) #绘制半个圆cv2.imshow("img",img)cv2.imshow("img_copy",img_copy)cv2.waitKey(0)cv2.destroyAllWindows()
4)绘制多边形
除了绘制上面的常见图形,也可以自定义坐标,然后根据坐标来绘制多边形,opencv绘制多边形的函数为polylines,dst = polylines(img, pts, isClosed, color[, thickness[, lineType]])
pts表示存放点集坐标的二维数组,isClosed表示是否把绘制的多条线段首尾相连,thickness 线宽的值必须大于0。还可以绘制填充多边形,fillPoly(img, pts, color[, lineType])
import cv2 #绘制多边形import numpy as npimg = np.zeros([480,640,3],np.uint8)#多边形的点集,必须是int32位pts = np.array([(50,50),(50,100),(100,200),(200,400),(400,100)],np.int32)#cv2.polylines(img,[pts],True,[0,0,255],thickness=3) #绘制多边形cv2.fillPoly(img,[pts],[255,0,0]) #绘制填充多边形cv2.imshow("lines",img)cv2.waitKey(0)cv2.destroyAllWindows()
5)绘制文字
在图像处理中 ,经常要对图像增加一些说明性文字,opencv提供了用于绘制文字的函数putText, dst = putText(img,text,org,fontFace,fontscale,color,thickness=None) text是待绘制的文字,org表示文字在图像中绘制区域的左下角位置,fontFace表示字体,fontScale表示对字体的缩放比例,color表示颜色,thickness表示绘制文字的粗细。text也可以由用户手动输入。
import cv2 #绘制文字,opencv不能绘制中文img = cv2.imread("./cat.jpg")#text = "this is a cat"text = input("enter your input:") #从键盘自己输入文字draw_text = cv2.putText(img,text,(200,50),cv2.FONT_ITALIC,1,(0,0,255),thickness=2)cv2.imshow("img",draw_text)cv2.waitKey(0)cv2.destroyAllWindows()
此外,opencv没法直接绘制中文字符,可以用pillow包绘制中文,需要用的中文字体在windows下的fonts里面拷贝出来(我拷贝了微软雅黑字体),拷贝到当前路径会自动命名msyhbd.ttc。
具体代码如下:
import cv2 #opencv没法绘制中文文本,可以用pillow包绘制中文,需要用的中文字体在windows下的fonts里面拷贝出来import numpy as npfrom PIL import ImageFont,ImageDraw,Image img = cv2.imread("./cat.jpg")font = ImageFont.truetype("./msyhbd.ttc",20) #导入字体文件,参数是字体大小img_pil = Image.fromarray(img) #创建一个pillow的图片print(img_pil)draw = ImageDraw.Draw(img_pil) #利用draw绘制中文text = "这是一只猫"draw.text((250,10),text,font=font,fill=(0,0,255))img = np.array(img_pil) #把图片重新变回ndarray格式才能显示 cv2.imshow("img",img)cv2.waitKey(0)cv2.destroyAllWindows()
3 利用鼠标和键盘控制绘制图形
首先介绍一下opencv的鼠标操作,鼠标事件回调函数为setMouseCallback,定义为:setMouseCallback(windowname, onMouse) windowname为窗口名,onMouse为鼠标事件回调函数。鼠标事件类型有MouseEventType定义,鼠标事件常用的主要有:EVENT_LBUTTONDBLCLK(左键双击),EVENT_RBUTTONDBLCLK(右键双击),EVENT_LBUTTONDOWN(按下左键),EVENT_RBUTTONDOWN(按下右键),EVENT_LBUTTONUP(左键释放),EVENT_RBUTTONUP(右键释放),EVENT_MOUSEMOVE(移动鼠标)。
1)通过鼠标操作绘制图形
本例通过不同的鼠标操作进行图形绘制,双击可以绘制圆,鼠标左键按下拖动绘制红色线,鼠标右键按下拖动绘制蓝色线。
import cv2 import numpy as npstart_point=(0,0) #鼠标开始坐标和结束坐标(其实这里只需要定义一个鼠标坐标点就行)end_point=(0,0) #必须把这些参数定义为全局变量,如果在函数内部的话,每次调用函数这些参数都会被重置lb_down,lb_up,rb_down,rb_up = False,False,False,False #鼠标按键按下/抬起的标志,bool型def mouse_event(event,x,y,flags,param): #鼠标回调函数 (event是鼠标事件,x,y是鼠标指针当前所指的坐标) global start_point,end_point,lb_down,lb_up,rb_down,rb_up #如果全局变量是int或者str,那么如果想要在函数中对函数变量进行修改,则需要 #先在函数内,声明其为global,再进行修改,如果是list或者dict则可以直接修改 if event == cv2.EVENT_LBUTTONDBLCLK: cv2.circle(img,(x,y),100,(0,0,255),thickness=3) #双击左键绘制圆 elif event == cv2.EVENT_LBUTTONDOWN: #左键按下,更新鼠标坐标,启动按下标志 start_point = (x,y) end_point = start_point lb_down = True elif event == cv2.EVENT_RBUTTONDOWN: #右键按下,更新鼠标坐标,启动按下标志 start_point = (x,y) end_point = start_point rb_down = True elif event == cv2.EVENT_MOUSEMOVE: #鼠标移动,绘制线 if lb_down: #如果左键按下,绘制红色线 cv2.line(img,start_point,(x,y),(0,0,255),thickness=3) if rb_down: #如果右键按下,绘制蓝色线 cv2.line(img,start_point,(x,y),(255,0,0),thickness=3) start_point = (x,y) #只要鼠标移动,就更新鼠标的坐标 elif event == cv2.EVENT_LBUTTONUP: #左键释放 lb_up = True lb_down = False cv2.line(img,start_point,(x,y),(0,0,255),thickness=3) #鼠标点击后直接释放鼠标的时候也会绘制一个点 elif event == cv2.EVENT_RBUTTONUP: #右键释放 rb_up = True rb_down = False cv2.line(img,start_point,(x,y),(255,0,0),thickness=3) #鼠标点击后直接释放鼠标的时候也会绘制一个点 #img = np.zeros((512,512,3),np.uint8) #创建一个黑色图像img = cv2.imread("./cat.jpg")cv2.namedWindow("image") #新建窗口cv2.setMouseCallback("image",mouse_event) #设置鼠标回调while True: cv2.imshow("image",img) if cv2.waitKey(1)==ord("q"): #waitKey参数不能写0,写0就需要键盘输入才会继续 breakcv2.destroyAllWindows()
2)通过鼠标键盘配合绘制图形
本来通过鼠标键盘绘制图形:按下l,拖动鼠标,绘制直线;按下r,拖动鼠标,绘制矩形;按下c,拖动鼠标,绘制圆。首先,绘制图形,需要记录起始位置start_point,按下鼠标左键的时候记录起始位置,鼠标左键释放的时候作为终点,绘制图形。还需要一个参数flag_key用来记录绘制那种图形的标志。
import cv2import numpy as npstart_point = (0,0) #鼠标起始位置flag_key = 0 #选择绘制图形标志def mouse_callback(event,x,y,flags,userdata): #鼠标回调函数 global start_point,flag_key #声明全局变量 if event == cv2.EVENT_LBUTTONDOWN: #按下鼠标左键,记录起始位置 start_point = (x,y) elif event == cv2.EVENT_LBUTTONUP: #松开鼠标左键,绘制图形 if flag_key == 0: cv2.line(img,start_point,(x,y),[0,0,255],3) #绘制直线 elif flag_key ==1: cv2.rectangle(img,start_point,(x,y),[0,255,0],3) #绘制矩形 elif flag_key ==2: a = x - start_point[0] b = y - start_point[1] radius = int((a**2 + b**2)**0.5) #计算圆心 cv2.circle(img,start_point,radius,[255,0,0],3,) #绘制圆img = np.zeros((800,800,3),np.uint8) cv2.namedWindow("image") cv2.setMouseCallback("image",mouse_callback) #设置鼠标回调while True: cv2.imshow("image",img) key =cv2.waitKey(1) #键盘按键判断,更新绘制图形标志 if key == ord("l"): flag_key=0 elif key == ord("r"): flag_key=1 elif key == ord("c"): flag_key=2 elif key == ord("q"): breakcv2.destroyAllWindows()
3)在图像上面显示某一点的坐标和对应的像素值
有时需要根据图像的像素值进行某些操作,图片上可以设置双击左键获取坐标和对应的rgb值,双击右键获取坐标和对应的hsv值。主要涉及的是鼠标操作setMouseCallback 和 绘制文字操作putText。
# 直接根据鼠标双击获取图像当前位置的像素值import cv2import numpy as npimg = cv2.imread("./cat.jpg")img_hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) #转换到hsv空间#print(img.shape)def mouse_event(event,x,y,flags,param): if event == cv2.EVENT_LBUTTONDBLCLK: #双击左键显示图像的坐标和对应的rgb值 print("img pixel value at(", x, ",", y, "):",img[y, x]) #坐标(x,y)对应的像素值应该是img[y,x] text = "(" + str(x) + "," + str(y) + ")" + str(img[y,x]) cv2.putText(img,text,(x,y),cv2.FONT_HERSHEY_SIMPLEX,0.5,(255,0,0),1) #绘制文字 if event == cv2.EVENT_RBUTTONDBLCLK: #双击右键显示图像的坐标和对应的hsv值 print("img_hsv pixel value at(", x, ",", y, "):",img_hsv[y, x]) #坐标(x,y)对应的像素值应该是img_hsv[y,x] text = "(" + str(x) + "," + str(y) + ")" + str(img_hsv[y,x]) cv2.putText(img,text,(x,y),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,0,255),1) #绘制文字cv2.namedWindow("image",cv2.WINDOW_NORMAL) #定义窗口#cv2.resizeWindow("image",(800,800)) cv2.setMouseCallback("image",mouse_event) #鼠标回调while True: cv2.imshow("image",img) if cv2.waitKey(1)==ord("q"): breakcv2.destroyAllWindows()
4 给图像加水印logo
用矩形或者圆等组合自己绘制一个合适的logo,然后把logo添加到图像上适当位置,比如如下logo,加入cat图片的右上角。
把logo水印插入到指定的图片中,比较简单的想法是:从图片适当位置取出与logo大小一致的图片切片,然后与logo进行操作,这个操作可以把logo水印添加到图片切片中且不影响到切片背景,然后直接把融合后的切片放到之前的位置即可。这个操作还涉及到一个比较重要的东西,mask的作用。mask是掩膜,可以用来遮盖非感兴趣区,突出感兴趣区,使得图像处理只专注于ROI部分。
mask是一个二值图像,与对应尺寸的图片进行与操作可以获取感兴趣的区域,比如下列提取猫头的简单操作:
import cv2import numpy as npimg = cv2.imread("./cat.jpg")print(img.shape)mask = np.zeros(img.shape[:2],np.uint8) #和原图像尺寸一样大的掩膜mask[50:180,30:190] = 255 #猫头的大概位置roi = cv2.bitwise_and(img,img,mask=mask) #mask与对应图像进行与操作提取roi区域cv2.imshow("img",img)cv2.imshow("mask",mask)cv2.imshow("roi",roi)cv2.waitKey(0)cv2.destroyAllWindows()
因此,根据刚才的思路,提取logo的掩膜,然后与图片切片进行掩膜操作提取logo外围黑色区域所需的背景,然后把所得图片和logo进行相加即可获得融合logo的图片。
import cv2 #给图像加上水印logoimport numpy as npimg = cv2.imread("./cat.jpg")w,h,c = img.shapeimg = cv2.resize(img,(int(h*1.5),int(w*1.5)),interpolation=cv2.INTER_AREA) #图片放大1.5倍logo = np.zeros((200,200,3),np.uint8) #创建logo图片窗口logo[20:120,20:120]=[0,0,255] #logo上绘制矩形logo[80:180,80:180]=[255,0,0]cv2.circle(logo,(100,100),50,(0,255,0),-1) #绘制实心圆mask = np.zeros((200,200),np.uint8) #构造一个掩模图像,将该掩模图像作为按位与函数的掩模参数,实现保留图像的指定部分mask[20:120,20:120]=255 #掩码是二维矩阵,当使用掩模参数时,操作只会在掩模值为非空的像素点上执行,并将其他像素点的值置为0mask[80:180,80:180]=255for i in range(200): #把logo绿色通道的圆对应的mask也拷贝过去 for j in range(200): if logo[i][j][1] ==255: mask[i][j]=255 else: passm = cv2.bitwise_not(mask) #因为要插入logo时要保证logo附近的背景不变,因此这里用mask把logo附近的背景取出来,所以需要mask取反temp = img[20:220,500:700]img2 = cv2.bitwise_and(temp,temp,mask=m) #提取跟logo窗口一样大的图片,logo标志像素为0,背景与原背景相同dst = cv2.add(img2,logo) img[20:220,500:700]=dst #把最终的融合背景的logo放到图片对应的位置cv2.imshow("logo",logo) cv2.imshow("mask",mask) cv2.imshow("img2",img2)cv2.imshow("img",img)cv2.waitKey(0)cv2.destroyAllWindows()
logo,logo对应的掩膜,具有掩膜的背景图片切片和融合logo后的切片图片如下:
最终的添加logo后的图片如下:
关键词:
-
-
-
-
opencv-python图像处理模块(一)
lol探险家带什么符文(lol探险家ez符文怎么搭配)
Intel 14代酷睿笔记本榨干牙膏!8+16满血核心全线出击
未来属于HDMI还是DP接口?联想:恐怕都不是 而是Type-C
AMD锐龙7000差点上昂贵的VC均热板!可惜 效果奇差无比
《王者荣耀》联名宝格丽!芈月璀璨新程皮肤公布:高贵女王
快使用双截棍 | 低码之连接器 元服务开发的奇门武器
2023年全国残疾人游泳锦标赛落幕 安阳市运动员“泳”夺2金1银2铜
两部门:支持房地产市场政策期限延长至2024年12月31日
日本北海道砒霜泄露:最新监测发现已超标2100倍
多色可选:雪中飞男士冰丝薄款弹力牛仔裤29元抄底
8999元 戴尔新款37.5寸带鱼屏上市:支持IPS Black技术
马斯克开着Cybertruck兜风 答应网友加炮塔
特斯拉呼吁收紧史上最严排放标准 与传统车企“对着干”
大涨!光伏逆变器概念股风云再起,又将谁主沉浮?
1份价格2个会员!京东PLUS + 芒果TV会员年卡98元限时购
坦克300撞废逆行哈弗H6 长城回应:不能只看受损去判定谁更胜一筹
承认落后!奥迪被曝求助中国车企:将购买纯电平台 缩短研发时间
OPPO官宣与理想合作:理想全系均支持手表无感车钥匙
8月量产!iPhone 15/15 Pro新配色颜值高:辨识度拉满了
PlayWright(十四)- 前置和后置
Threads 四天破亿,扎克伯格暴击马斯克
债市日报:7月10日
新造车自燃 气不过把电池子公司给卖了
3.99万起买“埃尔法” 国产新能源未奥BOMA上市:丰田能气笑
14代酷睿i7-14700K解锁4个小核心:跑分飙升18%
全球多地遭遇极端高温天气:正值冬季的南极洲也出现异常
官司已打几十场!加多宝回应被判赔偿广药集团3.17亿元 :立即上诉
中学生40度天坐爸爸车后座认真背书
领域知识图谱-中式菜谱知识图谱:实现知识图谱可视化和知识库智能问答系统(KBQA)
【财经分析】“初尝”退市整理期 蓝盾转债价格单日缩水76.74%
储蓄国债利率再降 3%成历史
【高端访谈·REITs生态圈】积极参与REITs市场 构建保租房业务发展新格局——访城投控股董事长张辰
《种地吧》文化输出了!韩版7月底翻拍:爱奇艺版豆瓣9分
奥迪欲购买国产电动平台 网友意见出奇一致:比亚迪e3.0
宝妈买3斤干冰降温家中秒变仙境 消防:处置不当有危险
微信又双叒叕推送更新 网友:无用的功能又增加了
激进的骁龙8 Gen2旗舰来了!李杰暗示一加Ace 2 Pro遥遥领先
中央网信办:加强“自媒体”管理,强化资质认证展示
数据图表解析:掌握关键指标,提升数据分析能力
共探AI大模型时代下的挑战与机遇,华为云HCDE与大模型专家面对面
线段树
胡锡进发文回应卸任环球时报职务:已在2021年年底退休时卸去所有公职
三伏天将开启,南方电网最高用电负荷逼近历史纪录
收评:创业板指冲高回落收涨1.37% 多只超跌行业龙头放量反弹
私家车高速抛锚 司机走下高速 满满一车西瓜太瞩目
5G鸿蒙生态手机!WIKO Hi畅享60 Pro发布:1799元起
网曝李咏女儿法图麦将作为演员出道:精通五种语言的学霸
安卓板皇!三星Galaxy Tab S9系列曝光:骁龙8 Gen2加持 售价过万
禁售传闻又起 NVIDIA特供中国显卡A800涨价:一周贵了2万块
使用 INFINI Console 实现 Elasticsearch 的增量数据迁移
我国发布13种矿产资源全球储量评估数据
记者手记:未来已来,人类如何应对人工智能挑战
马斯克发文称要买下抖音 删掉魔性BGM?真相来了
热疯了!专家预测:今年全球还将多次打破高温纪录
年轻人第一款奢侈品 《王者荣耀》首款数字珠宝皮肤今晚发布
48小时留香 1颗=8盖:立白小苍兰洗衣凝珠0.39元/颗大促
全球5G专利排名:华为第一!小米进步神速 4次对华为提专利无效宣告请求
阿里云通义大模型家族迎来新成员,通义万相已开启定向邀测
和评理 | 北约已搞乱欧洲 不要再搞乱亚洲
广州一特斯拉闯红灯撞上电瓶车致1死 躲过一劫路人:看到特斯拉都有恐惧
因手机和电脑需求低迷 存储芯片还得跌?海外大厂亏麻了
珠海长隆海洋王国标准票包含什么?
吴京、斯坦森双雄出演:《巨齿鲨2》国风海报公布
中暑身亡导游当天工作情况披露:选了一条1.5公里步行路线
国家铁路半年发送电煤7.77亿吨:库存能用30.6天
300元网购三星4TB SSD后:通电测速无语到家!天坑
老人修空调花近5000元:疑被诈骗
去参加星光大道火的组合有哪些 星光大道走红的组合
知识库
10个安全问题带你了解OWASP 定义的大模型应用
二分查找
语音软件源码开发搭建,好友管理功能剖析
2023中酒展丨权图:酱酒还有近一倍的增长空间 但增速会进入合理化阶段
悬赏千万的狗已找到 主人给了5000引热议:手机已关机 联系不上
小学生开始去胖东来抢座位了:有空调 免费看书
搭载7.8英寸彩色水墨屏:MobiScribe推出Wave Color阅读器
1499元起 小米电视EA系列更新:顶配75寸4K屏
原价439元:361° 篮球鞋2折狂促 89元起到手
杨超:下半年A股仍处于布局时点 震荡上行概率较大
Dax函数教程_编程入门自学教程_菜鸟教程-免费教程分享
一线调研|广东中山改造低效园区 推动集约发展
1瓶也包邮!天猫超市佰恩氏青柠汁大促:券后9块9
微软终于迷途知返:CFO提醒员工要与用户产生共鸣
扬言毁灭人类的女机器人答记者问:AI比人类更优秀
王宝强被生活“击倒”后的六年再度担任导演!凭《八角笼中》逆袭
刚承诺不打价格战 特斯拉就给车主送福利:最高抵扣7千
东易日盛7月10日快速上涨
【一步步开发AI运动小程序】十二、自定义一个运动分析器,实现计时计数02
东城住建委对“私拆承重”开出首张罚单
吉利杀疯了!新款帝豪L Hi·P将上市:预计10万内 续航1300km
特斯拉摊牌了!未来几年电动汽车价格将大幅下调 必须尽快禁售燃油车
皮特与维斯塔潘同框
离岸流又惹祸?陪女友看周杰伦演唱会男孩不幸溺亡
没有科技与狠活 配料纯生椰研磨!南国生椰拿铁大促:0.99元/杯
央行公开市场净回笼30亿元
【后端面经-Java】I/O多路复用 简录
AI热潮推动,七大科技股总市值突破11万亿美元,是德国GDP近三倍
国产显卡核心多数是外购:自研太难 绕开国外不现实不划算
拖行近1公里!宝马女司机撞人拖行案受害者要抗诉 获刑超6年处罚太轻