opencvpython重复小图片_Python 6.给图片添加边框(重复,复制,纯色等) OpenCV

?i=20200127181813785.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MDcxMzYy,size_16,color_FFFFFF,t_70

import cv2

import numpy as np

from matplotlib import pyplot as plt

BLUE = [255, 0, 0]

img1 = cv2.imread('pic1.png', 1)

# change the value of bgr

b, g, r = cv2.split(img1)

img2 = cv2.merge([r, g, b])

img3 = cv2.merge([r, g, b])

img4 = cv2.merge([r, g, b])

img5 = cv2.merge([r, g, b])

# make one of bgr become 0

img3[:, :, 0] = 0

img4[:, :, 1] = 0

img5[:, :, 2] = 0

# make all kind of border

replicate = cv2.copyMakeBorder(img1, 10, 10, 10, 10, cv2.BORDER_REPLICATE)

reflect = cv2.copyMakeBorder(img1, 10, 10, 10, 10, cv2.BORDER_REFLECT)

reflect101 = cv2.copyMakeBorder(img1, 10, 10, 10, 10, cv2.BORDER_REFLECT_101)

wrap = cv2.copyMakeBorder(img1, 10, 10, 10, 10, cv2.BORDER_WRAP)

constant = cv2.copyMakeBorder(img1, 10, 10, 10, 10, cv2.BORDER_CONSTANT, value=BLUE)

# plot figure

plt.subplot(331), plt.imshow(img2), plt.title('origin')

plt.subplot(332), plt.imshow(replicate, 'gray'), plt.title('replicate')

plt.subplot(333), plt.imshow(reflect, 'gray'), plt.title('reflect')

plt.subplot(334), plt.imshow(reflect101, 'gray'), plt.title('reflect101')

plt.subplot(335), plt.imshow(wrap, 'gray'), plt.title('wrap')

plt.subplot(336), plt.imshow(constant, 'gray'), plt.title('constant')

plt.subplot(337), plt.imshow(img3), plt.title('img3')

plt.subplot(338), plt.imshow(img4), plt.title('img4')

plt.subplot(339), plt.imshow(img5), plt.title('img5')

plt.show()

3_qq_36071362

3.png

qq_36071362

发布了28 篇原创文章 · 获赞 39 · 访问量 6744

私信

关注

标签:subplot,10,plt,title,Python,imshow,cv2,OpenCV,纯色

来源: https://blog.csdn.net/qq_36071362/article/details/104097501

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是一个示例代码,可以将N张图片转换为2*N张隔行扫描的小图片: ```python import cv2 import os def split_image(image, path, prefix): height, width, _ = image.shape for i in range(2): for j in range(N): small_image = image[i*height//2:(i+1)*height//2, j*width//N:(j+1)*width//N] filename = os.path.join(path, prefix + '_' + str(i*N+j) + '.jpg') cv2.imwrite(filename, small_image) N = 10 # 每张图片分割为 N*N 个小图片 src_path = './images' # 原始图片所在路径 dst_path = './split_images' # 分割后图片保存路径 prefix = 'image' # 图片文件名前缀 if not os.path.exists(dst_path): os.mkdir(dst_path) # 遍历原始图片目录 for file in os.listdir(src_path): if file.endswith('.jpg'): # 读取原始图片 image = cv2.imread(os.path.join(src_path, file)) # 分割为 2*N 个小图片 split_image(image, dst_path, prefix) ``` 这个程序将每张图片分割为 N*N 个小图片,并按照隔行扫描的方式排列,最终生成 2*N 张小图片,保存到指定的目录中。 ### 回答2: 要编写Python OpenCV程序将N幅图片批量转换为2*N幅隔行扫描的小图片,可以按照以下步骤操作: 1. 导入必要的库和模块,包括OpenCV和NumPy。 2. 设定原始图片的路径和扩展名,以及新生成图片的保存路径和扩展名。 3. 创建一个函数来实现图片转换功能。函数中可以包含以下步骤: - 使用OpenCV的imread函数加载原始图片。 - 获取图片的行数和列数。 - 创建一个新的空白图像,大小为原始图片行数的两倍,列数不变。 - 使用两个嵌套的循环,从原始图片中提取每个奇数行的像素,并将其复制到新生成图片的对应位置。 - 将新生成的图片保存到指定路径。 4. 使用一个循环,按照指定路径读取N幅原始图片,并调用函数进行转换操作。 下面是该程序的示例代码: ```python import cv2 import numpy as np # 原始图片路径和扩展名 original_path = "original/" original_ext = ".jpg" # 新生成图片保存路径和扩展名 new_path = "processed/" new_ext = ".jpg" # 转换函数 def convert_image(original_image_path, new_image_path): # 加载原始图片 original_image = cv2.imread(original_image_path) # 获取行数和列数 rows, cols, _ = original_image.shape # 创建新的空白图像 new_image = np.zeros((2*rows, cols, 3), np.uint8) # 逐行复制像素 for i in range(rows): if i % 2 == 0: new_image[2*i] = original_image[i] # 保存新生成的图片 cv2.imwrite(new_image_path, new_image) # 批量转换图片 N = 5 for i in range(1, N+1): original_image_path = original_path + str(i) + original_ext new_image_path = new_path + str(2*i) + new_ext convert_image(original_image_path, new_image_path) ``` 以上代码可以将N幅原始图片转换为2*N幅隔行扫描的小图片,并保存到指定路径。你可以根据自己的需求调整代码中的路径和参数。 ### 回答3: 编写Python OpenCV程序将N幅图片批量转换为2*N幅隔行扫描的小图片,您可以按照以下步骤进行: 1. 首先,导入所需的模块和库:OpenCV(cv2)、NumPy(numpy) 2. 创建一个函数来处理图片转换的逻辑。假设函数名为convert_images。 3. 在函数中,使用cv2.imread()函数逐个读取N幅图片。 4. 创建一个空的列表变量来存储转换后的小图片。 5. 使用循环迭代每个读取的图片。 6. 获取每个图片的长和宽。 7. 创建两个空白的画布,分别用于存储偶数行和奇数行的像素。 8. 使用两个嵌套的循环迭代每个像素。 9. 将偶数行像素存储到偶数行画布上,奇数行像素存储到奇数行画布上。 10. 将存储好的偶数行画布和奇数行画布按照目标格式(隔行扫描)合并为一张新的小图片。 11. 将合并好的小图片添加到之前创建的列表中。 12. 循环结束后,将存储所有小图片的列表返回。 13. 在主程序中调用convert_images函数,传入N幅图片的路径作为参数。 14. 使用cv2.imwrite()函数逐个保存转换后的小图片。 15. 结束程序。 您可以根据实际需求和自身的编程风格对细节进行调整和完善。以上就是一个简单的实现思路来完成将N幅图片批量转换为2*N幅隔行扫描的小图片的Python OpenCV程序。希望能对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值