python模块opencv之图片操作(2)

大家一起学机器学习啦!

图片操作太多了,这里包括了

1.平铺图像

2.转置图像

3.灰度化

4.加噪点

import cv2
import numpy as np

fn = 'Img2.jpg'

img1 = cv2.imread(fn)
w = img1.shape[1]
h = img1.shape[0]

'''平铺图像'''
sz1 = w*2#横向平铺5个图像
sz0 = h*2#纵向平铺两个图像

myImg1 = np.zeros((sz0, sz1, 3), np.uint8)#创建空白图像
img_x = 0
img_y = 0
for now_y in range(0, sz0):#逐个像素点复制
    for now_x in range(0, sz1):
        myImg1[now_y, now_x, 0] = img1[img_y, img_x, 0]
        myImg1[now_y, now_x, 1] = img1[img_y, img_x, 1]
        myImg1[now_y, now_x, 2] = img1[img_y, img_x, 2]

        img_x += 1
        if img_x >= w:
            img_x = 0
    img_y += 1
    if img_y >= h:
        img_y = 0

'''转置图像'''
img_x = 0
img_y = 0
myImg2 = np.zeros((w, h, 3), np.uint8)#创建空白图像
for now_y in range(0, h):
    for now_x in range(0, w):
        myImg2[now_x, now_y, :] = img1[now_y, now_x, :]

'''图像镜像'''
myImg3 = img1.copy()
mirror_w = int(w/2)
for j in range(0, h):
    for i in range(0, mirror_w):
        myImg3[j, i, :] = img1[j, w-i-1, :]

'''图像灰度化'''
myImg4 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)

'''图像加噪'''
coutn = 100000#噪点数量
myImg5 = img1.copy()
for k in range(0, coutn):
    xi = int(np.random.uniform(0, myImg5.shape[0]))#获取噪点的随机位置
    xj = int(np.random.uniform(0, myImg5.shape[1]))

    if myImg5.ndim == 2:#加噪点
        myImg5[xi, xj] = 255
    elif myImg5.ndim == 3:
        myImg5[xi, xj, 0] = 25
        myImg5[xi, xj, 1] = 20
        myImg5[xi, xj, 2] = 20

cv2.imshow('img1', myImg1)
cv2.imshow('img2', myImg2)
cv2.imshow('img3', myImg3)
cv2.imshow('img4', myImg4)
cv2.imshow('img5', myImg5)
cv2.waitKey()
cv2.destroyAllWindows()

发布了24 篇原创文章 · 获赞 88 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/SoHardToNamed/article/details/78528342
今日推荐