网站菜单

OpenCV学习笔记(附1)——椒盐图生成

根据最近的学习需求创建了一个自动生成椒盐图Python程序。后续还有改进空间。

import cv2
import numpy as np

img_name = "Lenna.jpg"

if __name__ == '__main__':
    print ("load %s..." %img_name)
    img = cv2.imread(img_name)
    count = int(img.shape[0]*img.shape[1]/200)
    print("椒盐数:%d" %count)
    for k in range(0, count):
        #get the random point
        xi = int(np.random.uniform(0, img.shape[1]))
        xj = int(np.random.uniform(0, img.shape[0]))
        #如果是灰度图
        if img.ndim == 2:
            index = np.random.randint(0,2)
            #生成椒
            if index == 0:
                img[xj, xi] = 255
            #生成盐
            else:
                img[xj, xi] = 0
        #如果是BGR图
        elif img.ndim == 3:
            index = np.random.randint(0,2)
            #生成椒
            if index == 0:
                img[xj,xi,0] = 25
                img[xj,xi,1] = 20
                img[xj,xi,2] = 20
            #生成盐
            else:
                img[xj,xi,0] = 255
                img[xj,xi,1] = 255
                img[xj,xi,2] = 255
    cv2.imshow("img", img)
    cv2.imwrite("LennaNoise.jpg", img)
    cv2.waitKey()
    cv2.destroyAllWindows()
显示评论 (0)

文章评论

相关推荐

Yolov5_Seg输出解析

通过矩阵乘法(在代码中称为“matmul”)来计算分割掩码的原因,主要与实例分割网络(例如 YOLOv5 Segmentation)的实现方式有关。这种方法实际上是一种高效的特征图与目标分割系数组合的…

Ubuntu交叉编译Python

在 Ubuntu 上交叉编译 Python 的流程通常用于为不同平台生成可执行文件(如 ARM、MIPS 等)。以下是一般的操作步骤: 1. 安装必要的依赖工具 首先,确保已经安装了编译所需的工具和依…