vs做的网站如何域名能卖多少钱一个

web/2025/10/8 11:31:40/文章来源:
vs做的网站如何,域名能卖多少钱一个,上海网站原型设计,策划一场网络营销活动专栏地址#xff1a;『youcans 的图像处理学习课』 文章目录#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的图像处理学习课】4. 图像的叠加与混合 文章目录【youcans 的图像处理学习课】4. 图像的叠加与混合1. 图像的加法运算基本例程#xff1a;1.22 图像… 专栏地址『youcans 的图像处理学习课』 文章目录『youcans 的图像处理学习课 - 总目录』 【youcans 的图像处理学习课】4. 图像的叠加与混合 文章目录【youcans 的图像处理学习课】4. 图像的叠加与混合1. 图像的加法运算基本例程1.22 图像的加法基本例程1.23 图像与标量相加2. 图像的加权加法基本例程1.24 图像的混合加权加法扩展例程1.25 不同尺寸的图像加法扩展例程1.26 两张图像的渐变切换 改变加权叠加的权值3. 图像的掩模加法基本例程1.27 图像的掩模加法扩展例程1.28 圆形和其它形状的图像遮罩4. 图像的按位运算基本例程1.29 图像的位操作5. 图像的叠加基本例程1.30 图像的叠加6. 图像添加文字基本例程1.31 图像添加文字扩展例程1.32 图像中添加中文文字1. 图像的加法运算 函数 cv2.add() 用于图像的加法运算。 函数说明 cv2.add(src1, src2 [, dst[, mask[, dtype]]) → dst函数 cv2.add() 对两张相同大小和类型的图像进行加法运算或对一张图像与一个标量进行加法运算。 两张图像相加时将两张图像相同位置像素的各通道值或灰度值分别相加可以理解为一种图像叠加方式对一张图像与一个标量相加时则将图像所有像素的各通道值分别与标量的各通道值相加。 参数说明 scr1, scr2进行加法运算的图像或一张图像与一个 numpy array 标量dst输出的图像可选项默认值为 Nonemask掩模图像8位灰度格式掩模图像数值为 0 的像素输出图像对应像素的各通道值也为 0。可选项默认值为 Nonedtype图像数组的深度即每个像素值的位数可选项返回值dst运算结果图像ndarray 多维数组 注意事项 OpenCV 加法和 numpy 加法之间有区别cv2.add() 是饱和运算相加后如大于 255 则结果为 255而 Numpy 加法是模运算。使用 cv2.add() 函数对两张图片相加时图片的大小和类型通道数必须相同。使用 cv2.add() 函数对一张图像与一个标量相加标量是指一个 1x3 的 numpy 数组相加后图像整体发白。 基本例程1.22 图像的加法 # 1.22 图像的加法 (cv2.add)img1 cv2.imread(../images/imgB1.jpg) # 读取彩色图像(BGR)img2 cv2.imread(../images/imgB3.jpg) # 读取彩色图像(BGR)imgAddCV cv2.add(img1, img2) # OpenCV 加法: 饱和运算imgAddNP img1 img2 # # Numpy 加法: 模运算plt.subplot(221), plt.title(1. img1), plt.axis(off)plt.imshow(cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)) # 显示 img1(RGB)plt.subplot(222), plt.title(2. img2), plt.axis(off)plt.imshow(cv2.cvtColor(img2, cv2.COLOR_BGR2RGB)) # 显示 img2(RGB)plt.subplot(223), plt.title(3. cv2.add(img1, img2)), plt.axis(off)plt.imshow(cv2.cvtColor(imgAddCV, cv2.COLOR_BGR2RGB)) # 显示 imgAddCV(RGB)plt.subplot(224), plt.title(4. img1 img2), plt.axis(off)plt.imshow(cv2.cvtColor(imgAddNP, cv2.COLOR_BGR2RGB)) # 显示 imgAddNP(RGB)plt.show()例程说明 1.22 本例程运行结果如下图所示。图 3 是 cv2.add() 饱和加法的结果图 4 是 numpy 取模加法的结果。 饱和加法以 255 为上限所有像素只会变的更白大于原值取模加法以 255 为模会导致部分像素变黑 小于原值。因此一般情况下应使用 cv2.add 进行饱和加法操作不宜使用 numpy 取模加法。 基本例程1.23 图像与标量相加 # 1.23 图像的加法 (与标量相加)img1 cv2.imread(../images/imgB1.jpg) # 读取彩色图像(BGR)img2 cv2.imread(../images/imgB3.jpg) # 读取彩色图像(BGR)Value 100 # 常数# Scalar np.array([[50., 100., 150.]]) # 标量Scalar np.ones((1, 3), dtypefloat) * Value # 标量imgAddV cv2.add(img1, Value) # OpenCV 加法: 图像 常数imgAddS cv2.add(img1, Scalar) # OpenCV 加法: 图像 标量print(Shape of scalar, Scalar)for i in range(1, 6):x, y i*10, i*10print((x,y){},{}, img1:{}, imgAddV:{}, imgAddS:{}.format(x,y,img1[x,y],imgAddV[x,y],imgAddS[x,y]))plt.subplot(131), plt.title(1. img1), plt.axis(off)plt.imshow(cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)) # 显示 img1(RGB)plt.subplot(132), plt.title(2. img constant), plt.axis(off)plt.imshow(cv2.cvtColor(imgAddV, cv2.COLOR_BGR2RGB)) # 显示 imgAddV(RGB)plt.subplot(133), plt.title(3. img scalar), plt.axis(off)plt.imshow(cv2.cvtColor(imgAddS, cv2.COLOR_BGR2RGB)) # 显示 imgAddS(RGB)plt.show()例程说明 1.23 本例程运行结果如下。 Shape of scalar [[150. 150. 150.]] (x,y)10,10, img1:[ 9 9 69], imgAddV:[159 9 69], imgAddS:[159 159 219] (x,y)20,20, img1:[ 3 252 255], imgAddV:[153 252 255], imgAddS:[153 255 255] (x,y)30,30, img1:[ 1 255 254], imgAddV:[151 255 254], imgAddS:[151 255 255] (x,y)40,40, img1:[ 1 255 254], imgAddV:[151 255 254], imgAddS:[151 255 255] (x,y)50,50, img1:[ 1 255 255], imgAddV:[151 255 255], imgAddS:[151 255 255]注意 cv2.add() 对图像与标量相加时“常数” 与 “标量” 的区别将图像与一个常数 value 相加只是将 B 通道即蓝色分量与常数相加而 G、R 通道的数值不变因此图像发蓝。将图像与一个标量 scalar 相加“标量” 是指一个 1x3 的 numpy 数组此时 B/G/R 通道分别与数组中对应的常数相加因此图像发白。标量 numpy 数组的形式为np.array([[c1, c2, c3]])常数 c1,c2,c3 可以相同或不同。 2. 图像的加权加法 函数 cv2.addWeight() 用于图像的加权加法运算。 函数说明 cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) → dst 函数 cv2.addWeighted() 对两张相同大小和类型的图像按权重相加可以实现图像的叠加和混合。加权加法的计算表达式为 dst src1 * alpha src2 * beta gamma 参数说明 scr1, scr2ndarray 多维数组表示一个灰度或彩色图像alpha第一张图像 scr1 的权重通常取为 01 之间的浮点数beta第二张图像 scr2 的权重通常取为 01 之间的浮点数gamma 灰度系数图像校正的偏移量用于调节亮度dtype 输出图像的深度即每个像素值的位数可选项默认等于 src1.depth()返回值dst加权加法运算结果的图像数组 注意事项 使用 cv2.addWeight() 函数对两张图片相加时图片的大小和类型通道数必须相同。alphabetagamma 可调可以根据需要调整图像的权重以达到不同的显示效果。推荐取 beta1-alpha, gamma0。 基本例程1.24 图像的混合加权加法 # 1.24 图像的混合(加权加法)img1 cv2.imread(../images/imgGaia.tif) # 读取图像 imgGaiaimg2 cv2.imread(../images/imgLena.tif) # 读取图像 imgLenaimgAddW1 cv2.addWeighted(img1, 0.2, img2, 0.8, 0) # 加权相加, a0.2, b0.8imgAddW2 cv2.addWeighted(img1, 0.5, img2, 0.5, 0) # 加权相加, a0.5, b0.5imgAddW3 cv2.addWeighted(img1, 0.8, img2, 0.2, 0) # 加权相加, a0.8, b0.2plt.subplot(131), plt.title(1. a0.2, b0.8), plt.axis(off)plt.imshow(cv2.cvtColor(imgAddW1, cv2.COLOR_BGR2RGB)) # 显示 img1(RGB)plt.subplot(132), plt.title(2. a0.5, b0.5), plt.axis(off)plt.imshow(cv2.cvtColor(imgAddW2, cv2.COLOR_BGR2RGB)) # 显示 imgAddV(RGB)plt.subplot(133), plt.title(3. a0.8, b0.2), plt.axis(off)plt.imshow(cv2.cvtColor(imgAddW3, cv2.COLOR_BGR2RGB)) # 显示 imgAddS(RGB)plt.show()本例程运行结果如下 扩展例程1.25 不同尺寸的图像加法 # 1.25 不同尺寸的图像加法imgL cv2.imread(../images/imgB2.jpg) # 读取大图imgS cv2.imread(../images/logoCV.png) # 读取小图 (LOGO)x,y 300,50 # 叠放位置W1, H1 imgL.shape[1::-1] # 大图尺寸W2, H2 imgS.shape[1::-1] # 小图尺寸if (x W2) W1: x W1 - W2 # 调整图像叠放位置避免溢出if (y H2) H1: y H1 - H2imgCrop imgL[y:y H2, x:x W2] # 裁剪大图与小图 imgS 的大小相同imgAdd cv2.add(imgCrop, imgS) # cv2 加法裁剪图与小图叠加alpha, beta, gamma 0.2, 0.8, 0.0 # 加法权值imgAddW cv2.addWeighted(imgCrop, alpha, imgS, beta, gamma) # 加权加法裁剪图与小图叠加imgAddM np.array(imgL)imgAddM[y:y H2, x:x W2] imgAddW # 用叠加小图替换原图 imgL 的叠放位置cv2.imshow(imgAdd, imgAdd)cv2.imshow(imgAddW, imgAddW)cv2.imshow(imgAddM, imgAddM)cv2.waitKey(0)需要说明的是对不同尺寸的图像叠加可以有不同的理解和处理。本例程是将小图叠加到大图的指定位置。 本例程运行结果如下图所示。 扩展例程1.26 两张图像的渐变切换 改变加权叠加的权值 # 1.26 两张图像的的渐变切换 (改变加权叠加的权值)img1 cv2.imread(../images/imgLena.tif) # 读取图像 imgLenaimg2 cv2.imread(../images/imgB3.jpg) # 读取彩色图像(BGR)wList np.arange(0.0, 1.0, 0.05) # start, end, stepfor w in wList:imgAddW cv2.addWeighted(img1, w, img2, (1 - w), 0)cv2.imshow(imgAddWeight, imgAddW)cv2.waitKey(100)3. 图像的掩模加法 图像掩模image mask也常被写成 “图像掩膜”是用特定的图像或函数对另一图像进行覆盖或遮蔽以控制图像处理的区域或图像处理的过程。图像掩模常用于提取感兴趣区域ROI、提取结构特征或制作特殊形状的图像。 用于遮蔽的图像或函数称为掩模、掩像、模板或遮罩mask。对图像进行处理时被遮蔽的区域不参加处理或不参加处理参数的计算或者相反地仅对被遮蔽的区域进行处理或统计。 函数 cv2.add() 用于图像的加法运算可以使用掩模图像进行遮蔽。 cv2.add(src1, src2 [, dst[, mask[, dtype]]) → dst 掩模图像中的黑色区域数值为 0cv2.add 的输出也为黑色数值为 0掩模图像中的非黑色区域非 0 值cv2.add 的输出为加法输出。换句话说函数 cv2.add 进行加法运算对被掩模图像遮蔽的黑色区域不进行处理保持黑色。 注意事项 掩模图像 mask 为 8位灰度格式遮蔽区域为黑色数值为 0非遮蔽区域为白色数值为 255也称为开窗区域、窗口。掩模图像与进行加法运算的图像 src1, src2 的形状必须相同。 基本例程1.27 图像的掩模加法 # 1.27 图像的加法 (掩模 mask)img1 cv2.imread(../images/imgLena.tif) # 读取彩色图像(BGR)img2 cv2.imread(../images/imgB3.jpg) # 读取彩色图像(BGR)Mask np.zeros((img1.shape[0], img1.shape[1]), dtypenp.uint8) # 返回与图像 img1 尺寸相同的全零数组xmin, ymin, w, h 180, 190, 200, 200 # 矩形裁剪区域 (ymin:yminh, xmin:xminw) 的位置参数Mask[ymin:yminh, xmin:xminw] 255 # 掩模图像ROI 为白色其它区域为黑色print(img1.shape, img2.shape, Mask.shape)imgAddMask1 cv2.add(img1, img2, maskMask) # 带有掩模 mask 的加法imgAddMask2 cv2.add(img1, np.zeros(np.shape(img1), dtypenp.uint8), maskMask) # 提取 ROIcv2.imshow(MaskImage, Mask) # 显示掩模图像 Maskcv2.imshow(MaskAdd, imgAddMask1) # 显示掩模加法结果 imgAddMask1cv2.imshow(MaskROI, imgAddMask2) # 显示从 img1 提取的 ROIkey cv2.waitKey(0) # 等待按键命令 例程说明 1.27 本例程运行结果如下。 imgAddMask1 是标准的掩模加法在窗口区域将 img1 与 img2 进行饱和加法其它区域为黑色遮蔽。imgAddMask2 中加法运算的第二图像是全黑图像数值为 0掩模加法的结果是从第一图像中提取遮蔽窗口该操作生成的图像是从原图中提取感兴趣区域ROI、黑色遮蔽其它区域。 扩展例程1.28 圆形和其它形状的图像遮罩 # 1.28 图像的加法 (圆形和其它形状的遮罩)img1 cv2.imread(../images/imgLena.tif) # 读取彩色图像(BGR)img2 cv2.imread(../images/imgB3.jpg) # 读取彩色图像(BGR)Mask1 np.zeros((img1.shape[0], img1.shape[1]), dtypenp.uint8) # 返回与图像 img1 尺寸相同的全零数组Mask2 Mask1.copy()cv2.circle(Mask1, (285, 285), 110, (255, 255, 255), -1) # -1 表示实心cv2.ellipse(Mask2, (285, 285), (100, 150), 0, 0, 360, 255, -1) # -1 表示实心imgAddMask1 cv2.add(img1, np.zeros(np.shape(img1), dtypenp.uint8), maskMask1) # 提取圆形 ROIimgAddMask2 cv2.add(img1, np.zeros(np.shape(img1), dtypenp.uint8), maskMask2) # 提取椭圆 ROIcv2.imshow(circularMask, Mask1) # 显示掩模图像 Maskcv2.imshow(circularROI, imgAddMask1) # 显示掩模加法结果 imgAddMask1cv2.imshow(ellipseROI, imgAddMask2) # 显示掩模加法结果 imgAddMask2key cv2.waitKey(0) # 等待按键命令 本例程运行结果如下。 通过设计圆形、椭圆形或其它形状的图像遮罩可以从一张图像中提取不同形状的区域。 4. 图像的按位运算 函数 cv2.bitwise 提供了图像的位运算对图像的像素点值按位操作快速高效、方便灵活。 函数说明 cv.bitwise_and(src1, src2[, dst[, mask]] → dst # 位操作: 与 cv.bitwise_or(src1, src2[, dst[, mask]] → dst # 位操作: 或 cv.bitwise_xor(src1, src2[, dst[, mask]] → dst # 位操作: 与或 cv.bitwise_not(src1, src2[, dst[, mask]] → dst # 位操作: 非取反 位运算包括四种方法按位与、按位或、按位非、按位异或其计算方法是对图像的像素点值的按位运算运算效率高、速度快。以按位与操作 “bitwise_and” 为例 对图像中的每一像素矩阵中的每一元素将数值转换为二进制对 src1 和 src2 同一位置像素的数值进行按位操作 按位与 111, 100, 000将位操作的二进制结果转换为十进制。 类似地按位或、按位非、按位异或操作先将像素值转换为二进制进行位操作后再将结果转换回十进制。 参数说明 scr1, scr2进行位运算的图像ndarray 多维数组mask掩模图像8位灰度格式与 scr1 大小相同可选参数返回值dst位运算结果图像ndarray 多维数组 注意事项 进行位运算的图像 scr1, scr2 的大小和类型通道数必须相同。使用掩模图像时掩模图像中的黑色区域数值为 0输出也为黑色数值为 0掩模图像中的非黑色区域非 0 值按位操作输出。 基本例程1.29 图像的位操作 # 1.29 图像的位操作img1 cv2.imread(../images/imgLena.tif) # 读取彩色图像(BGR)img2 cv2.imread(../images/imgB2.jpg) # 读取彩色图像(BGR)imgAnd cv2.bitwise_and(img1, img2) # 按位 与(AND)imgOr cv2.bitwise_or(img1, img2) # 按位 或(OR)imgNot cv2.bitwise_not(img1) # 按位 非(NOT)imgXor cv2.bitwise_xor(img1, img2) # 按位 异或(XOR)plt.figure(figsize(9,6))titleList [img1, img2, and, or, not, xor]imageList [img1, img2, imgAnd, imgOr, imgNot, imgXor]for i in range(6):plt.subplot(2,3,i1), plt.title(titleList[i]), plt.axis(off)plt.imshow(cv2.cvtColor(imageList[i], cv2.COLOR_BGR2RGB), gray)plt.show() 例程说明 1.29 本例程运行结果如下图所示。 图中给出了两张图像进行位运算的结果看起来有些莫名其妙很难理解位操作究竟有什么意义。确实如此其实位操作基本上不会用于两张普通图像的操作通常是用于图像的掩模操作我们来看下一个例程。 5. 图像的叠加 两张图像直接进行加法运算后图像的颜色会改变通过加权加法实现图像混合后图像的透明度会改变都不能实现图像的叠加。 实现图像的叠加需要综合运用图像阈值处理、图像掩模、位操作和图像加法的操作。 我们以 Lena 图像叠加 CVlogo 为例讨论图像叠加的思路和步骤 确定图像叠加位置将 Lena 图像中的叠加位置裁剪出来使叠加图像的尺寸相同对前景图像进行二值化处理生成黑白掩模图像 maskLOGO区域黑色遮盖及其反转掩模图像 maskInv LOGO区域白色开窗以黑白掩模 maskLOGO区域黑色遮盖作为掩模对背景图像Lena裁剪图进行位操作LOGO区域遮盖为黑色其它区域保持不变得到叠加背景图像 img1BG以反转掩模 maskInvLOGO区域白色开窗作为掩模对前景图像CVlogo进行位操作LOGO区域保持不变其它区域遮盖为黑色得到叠加前景图像 img2FG背景图像 img1BG 和 前景图像 img2FG 通过 cv2.add 加法运算得到裁剪部分的叠加图像用叠加图像替换Lena 图像中的叠加位置得到Lena 叠加 CVlogo 的图像。 基本例程1.30 图像的叠加 # 1.30 图像的叠加img1 cv2.imread(../images/imgLena.tif) # 读取彩色图像(BGR)img2 cv2.imread(../images/logoCV.png) # 读取 CV Logox, y (0, 10) # 图像叠加位置W1, H1 img1.shape[1::-1]W2, H2 img2.shape[1::-1]if (x W2) W1: x W1 - W2if (y H2) H1: y H1 - H2print(W1,H1,W2,H2,x,y)imgROI img1[y:yH2, x:xW2] # 从背景图像裁剪出叠加区域图像img2Gray cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY) # img2: 转换为灰度图像ret, mask cv2.threshold(img2Gray, 175, 255, cv2.THRESH_BINARY) # 转换为二值图像生成遮罩LOGO 区域黑色遮盖maskInv cv2.bitwise_not(mask) # 按位非(黑白转置)生成逆遮罩LOGO 区域白色开窗LOGO 以外区域黑色# mask 黑色遮盖区域输出为黑色mask 白色开窗区域与运算原图像素不变img1Bg cv2.bitwise_and(imgROI, imgROI, maskmask) # 生成背景imgROI 的遮罩区域输出黑色img2Fg cv2.bitwise_and(img2, img2, maskmaskInv) # 生成前景LOGO 的逆遮罩区域输出黑色# img1Bg cv2.bitwise_or(imgROI, imgROI, maskmask) # 生成背景与 cv2.bitwise_and 效果相同# img2Fg cv2.bitwise_or(img2, img2, maskmaskInv) # 生成前景与 cv2.bitwise_and 效果相同# img1Bg cv2.add(imgROI, np.zeros(np.shape(img2), dtypenp.uint8), maskmask) # 生成背景与 cv2.bitwise 效果相同# img2Fg cv2.add(img2, np.zeros(np.shape(img2), dtypenp.uint8), maskmaskInv) # 生成背景与 cv2.bitwise 效果相同imgROIAdd cv2.add(img1Bg, img2Fg) # 前景与背景合成得到裁剪部分的叠加图像imgAdd img1.copy()imgAdd[y:yH2, x:xW2] imgROIAdd # 用叠加图像替换背景图像中的叠加位置得到叠加 Logo 合成图像plt.figure(figsize(9,6))titleList [1. imgGray, 2. imgMask, 3. MaskInv, 4. img2FG, 5. img1BG, 6. imgROIAdd]imageList [img2Gray, mask, maskInv, img2Fg, img1Bg, imgROIAdd]for i in range(6):plt.subplot(2,3,i1), plt.title(titleList[i]), plt.axis(off)if (imageList[i].ndim3): # 彩色图像 ndim3plt.imshow(cv2.cvtColor(imageList[i], cv2.COLOR_BGR2RGB)) # 彩色图像需要转换为 RGB 格式else: # 灰度图像 ndim2plt.imshow(imageList[i], gray)plt.show()cv2.imshow(imgAdd, imgAdd) # 显示叠加图像 imgAddkey cv2.waitKey(0) # 等待按键命令 例程说明 1.30 本例程实现图像的叠加中间过程图像如上图所示最终的叠加图像如下图所示。图像叠加所涉及的操作步骤较多建议将上文的步骤说明与程序、中间过程图像相互对照进行阅读。使用位操作生成前景 img1Bg 时使用掩模图像 mask 对 imgROI 与 imgROI 进行 “与操作”而不是直接对 mask 与 imgROI 进行操作是因为 mask 为灰度图像而 imgROI 为彩色图像不能直接进行加法或位操作。使用位操作生成前景、背景图像时遮罩区域以外 imgROI 与 imgROI 进行 “自与操作”如果用 “自或操作” 参见程序注释语句的效果也是相同的。此处甚至也可以用加法操作 cv2.add 实现参见程序注释语句但位操作的运算速度更快。函数 threshold() 将灰度图像转换为二值图像Binarization只有黑白两色。该方法通过固定阈值 thresh 处理图像将像素点的灰度值设为 0 或 255。 6. 图像添加文字 函数 cv2.putText() 用于在图像上绘制文本字符串即添加文字。 函数说明 cv2.putText(img, text, pos, fontFace,fontScale,color[, thickness[, lineType[, bottomLeftOrigin]]]) → dst 函数 cv2.putText() 用于在图像上绘制文本字符串。 参数说明 img添加文本字符串的图像ndarray 多维数组text添加的文本字符串pos文本字符串左下角坐标如元组 (x100, y100)font字体类型fontScale字体缩放比例因子color文本字符串的颜色如元组 (2550 0)thickness线条粗细单位为像素数lineType线条类型bottomLeftOrigin可选参数默认值 True 表示数据原点位于左下角False 表示位于左上角返回值dst结果图像ndarray 多维数组 注意事项 OpenCV 不支持显示中文字符使用 cv2.putText() 时添加的文本字符串不能包含中文字符包括中文标点符号。在图像中添加中文字符可以使用 pythonopencvPIL 实现或使用 pythonopencvfreetype 实现。具体方法详见扩展例程 1.32。 基本例程1.31 图像添加文字 # 1.31 图像添加文字img1 cv2.imread(../images/imgLena.tif) # 读取彩色图像(BGR)text OpenCV2021, youcansxuptfontList [cv2.FONT_HERSHEY_SIMPLEX,cv2.FONT_HERSHEY_SIMPLEX,cv2.FONT_HERSHEY_PLAIN,cv2.FONT_HERSHEY_DUPLEX,cv2.FONT_HERSHEY_COMPLEX,cv2.FONT_HERSHEY_TRIPLEX,cv2.FONT_HERSHEY_COMPLEX_SMALL,cv2.FONT_HERSHEY_SCRIPT_SIMPLEX,cv2.FONT_HERSHEY_SCRIPT_COMPLEX,cv2.FONT_ITALIC]fontScale 1 # 字体缩放比例color (255, 255, 255) # 字体颜色for i in range(10):pos (10, 50*(i1))imgPutText cv2.putText(img1, text, pos, fontList[i], fontScale, color)cv2.imshow(imgPutText, imgPutText) # 显示叠加图像 imgAddkey cv2.waitKey(0) # 等待按键命令 扩展例程1.32 图像中添加中文文字 # 1.32 图像中添加中文文字imgBGR cv2.imread(../images/imgLena.tif) # 读取彩色图像(BGR)from PIL import Image, ImageDraw, ImageFontif (isinstance(imgBGR, np.ndarray)): # 判断是否 OpenCV 图片类型imgPIL Image.fromarray(cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB))text OpenCV2021, 中文字体pos (50, 20) # (left, top)字符串左上角坐标color (255, 255, 255) # 字体颜色textSize 40drawPIL ImageDraw.Draw(imgPIL)fontText ImageFont.truetype(font/simsun.ttc, textSize, encodingutf-8)drawPIL.text(pos, text, color, fontfontText)imgPutText cv2.cvtColor(np.asarray(imgPIL), cv2.COLOR_RGB2BGR)cv2.imshow(imgPutText, imgPutText) # 显示叠加图像 imgAddkey cv2.waitKey(0) # 等待按键命令 【本节完】 版权声明 youcansxupt 原创作品转载必须标注原文链接(https://blog.csdn.net/youcans/article/details/120995650) Copyright 2022 youcans, XUPT 专栏地址『youcans 的图像处理学习课』 文章目录『youcans 的图像处理学习课 - 总目录』

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

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

相关文章

深圳网站建设有免费的吗教育类网站建设

目录 1.统一异常处理 2.统一记录日志 1.统一异常处理 在 HomeController 类中添加请求方法(服务器发生异常之后需要统一处理异常,记录日志,然后转到 500 页面,需要人工处理重定向到 500 页面,提前把 500 页面请求访问…

前端个人网站模板国内最新新闻摘抄30字

创建正点原子的TF-A工作区,目的是想查看正点原子的设备树文件“stm32mp157d-atk.dts”和设备树头文件“stm32mp157d-atk.dtsi”,了解设备树是什么样子,为后期基于“ST公司的源码”创建自己的设备树提供参考,同时也是为了学习移植u…

商城网站建设的步骤阿里云备案多个网站

卓金武——从数学建模到MATLAB 2013-9-4 09:48| 发布者: ilovematlab| 查看: 9647| 评论: 40 摘要: 人物简介——卓金武(Steven),MathWorks公司中国区应用工程师。在科学计算、定量优化、数学建模和数据挖掘领域拥有8年经验。曾3次获全国大学…

深圳制作网站的公司wordpress文章归档 文章显示数量

摄像机标定的目的是为了求解摄像机的内、外参数 求解投影矩阵M 通过建立特殊的场景,我们能过得到多对世界坐标和对应图像坐标 根据摄像机几何可知 : ,M是一个3*4的矩阵,令 通过一对点可以得到两个方程组,M中一共有11个…

中小型网站建设报价网站系统开发流程

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点&a…

查企企官方网站免费在线代理网页

作者推荐 视频算法专题 本文涉及知识点 数学 网格 状态压缩 LeetCode:782 变为棋盘 一个 n x n 的二维网络 board 仅由 0 和 1 组成 。每次移动,你能任意交换两列或是两行的位置。 返回 将这个矩阵变为 “棋盘” 所需的最小移动次数 。如果不存在可行的变换&am…

简易的小企业网站建设政协网站建设要求

空间 样本空间 就是属性的所有可能情况,包括了一切可能出现或不可能出现的所有样本情况 版本空间&假设空间 假设空间就是在样本空间的基础上,给所有属性都加了一个通配符,表示任意即可;以及加上了一个空集,表示…

app与微网站的区别是什么意思电子商务网站建设初学视频教程

在做项目时&#xff0c;随着需求的不断增加&#xff0c;我们的代码文件会越来越大&#xff0c;但是在打包时&#xff0c;在 Node 中通过 JavaScript 使用内存的大小却是有限制的。于是&#xff0c;今天打算部署代码时&#xff0c;报错了: <--- JS stacktrace ---> JS st…

如何注册网站平台重庆网站建设重庆零臻科技行

简介 在网络通信编程中&#xff0c;用的最多的就是UDP和TCP通信了&#xff0c;原理这里就不分析了&#xff0c;网上介绍也很多&#xff0c;这里简单列举一下各自的优缺点和使用场景 通信方式优点缺点适用场景UDP及时性好&#xff0c;快速视网络情况&#xff0c;存在丢包 与嵌入…

上传的网站打不开怎么办如何用网页制作网站

网页中的音视频 <audio> 和 <vedio> 标签属性&#xff1a;autoplay 自动播放 controls 控制播放 loop 循环播放 表单 HTML 表单用于收集用户输入。 标签<form> 标签属性 action 数据的路径 enctype 传输文件 enctype"multipart/form-data" method …

开封网站seo工作中网页开发方案

目录 线程安全和重⼊问题 死锁和活锁 死锁 死锁四个必要条件 活锁 STL,智能指针和线程安全 线程安全的单例模式 饿汉模式 懒汉模式 懒汉模式实现单例模式(线程安全版本) 饿汉模式实现单例模式 我们来学习单例模式与线程安全 线程安全和重⼊问题 线程安全&#xff…

自己电脑上做的网站 怎么让别人看口碑好的五屏网站建设

在硅谷一线大厂所维护的系统服务中&#xff0c;我们经常可以看见SLA这样的承诺。 例如&#xff0c;在谷歌的云计算服务平台Google Cloud Platform中&#xff0c;他们会写着“99.9% Availability”这样的承诺。那什么是“99.9% Availability”呢&#xff1f; 要理解这个承诺是…

西部数码上传网站柳州网站虚拟主机销售价格

介绍 本篇Codelab我们将教会大家如何构建一个简易的OpenHarmony新闻客户端&#xff08;JS版本&#xff09;。应用包含两级页面&#xff0c;分别是主页面和详情页面&#xff0c;两个页面都展示了丰富的UI组件&#xff0c;其中详情页的实现逻辑中还展示了如何通过调用相应接口&a…

广州网站建设电话咨询wordpress最新版本

较为官方的概念&#xff1a; 当且仅当规格说明是存在的并且正确&#xff0c;程序与规格说明之间的 不匹配才是错误。 当需求规格说明书没有提到的功能&#xff0c;判断标准以最终用户为准&#xff1a;当程序没有实现其最终用户合理预期的 功能要求时&#xff0c;就是软…

房地产网站建设策划书北京公司电话大全黄页

低功耗技术 功耗构成静态功耗(漏电功耗)动态功耗翻转功耗(Switch Power)短路功耗(Internal Power) 不同类型的标准单元的功耗 低功耗设计方法降低芯片工作电压多阈值工艺方法电源门控&#xff08;Power Gating&#xff09;多电压域(Multi-Voltage Domain)体偏置门控时钟一个简单…

班级响应式网站html格式游戏开发物语破解版

一.题目要求 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 二.题目难度 简单 三.输入样例 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示…

清远市住房与城乡建设局的网站查网站加背景音乐

已知有三个数据库mysql,mongodb和redis&#xff0c;已经分别存储了不同的学生信息&#xff0c;数据全部采用字符串类型&#xff0c;只有id和name两个字段(在mongo和redis中键为id,值为name)&#xff0c;现需编写代码实现需求&#xff1a;根据指定id获取对应的name和存储该条信息…

网站商城建站app是程序员做出来的吗

1 问题 app,自定义消息通知的时候,在Android8.0手机上收不到通知 2 解决办法 NotificationManager需要创建NotificationChannel,然后调用createNotificationChannel把NotificationChannel传递进去,并且通过setChannelId设置相应的id 3 普通样本代码实现 private static fina…

站长工具综合查询ip情人做网站

在上传文件时&#xff0c;想使用setRequestMethod&#xff08;“GET”&#xff09;。结果无效 因为需要使用输出流上传文件&#xff0c;而使用输出流时&#xff0c;HttpURLConnection默认使用post请求。是无法更改的 conn.setDoOutput(true); //允许输出流 与 conn.setR…

计算机网络 网站开发与设计网站推广的方式

背景 闲鱼目前已经是国内最大的闲置物品交易平台&#xff0c;每天都有数以千万计的用户过来闲鱼&#xff0c;以C2C交易为主。在闲鱼里面&#xff0c;用户的C2C购物频率其实是很低的&#xff0c;而纯粹地逛商品feed流是一件挺无聊的事情。在业务上做加法&#xff0c;突破闲鱼用…