新濠天地線上娛樂成:OpenCV:图像特效处理(一)

本文来源:http://www.344378.com/www_nvsay_com/

www.msc77.com,这个从长期来看,一定是具有它的合理性的。富国中证智能汽车(LOF)2016-01-072016-02-01国投双债丰利定开债券A2016-01-182016-01-29国投双债丰利定开债券C2016-01-182016-01-29鹏华添利货币ETFB2016-01-112016-01-22长信利泰灵活配置混合2016-01-082016-02-19西部利得行业主题优选混合2015-12-102016-02-05海富通东财大数据混合2016-01-042016-01-22浦银安盛睿智精选混合A2016-01-042016-01-29浦银安盛睿智精选混合C2016-01-042016-01-29交银卓越回报灵活配置混合2016-01-112016-01-29值得注意的是,虽然次新股作为一个板块连创新高,然而从基金投资的这些次新股来看,市场表现并不突出。他说:美国的福利根本就是一个骗局,移民美国后的国人都后悔得想死!在网上看到这样一篇文章,它描述了一种奇怪的现象,许多人在移民中国前都痛恨中国。

记者曾做过统计,首批上报的FOF产品多为绝对收益类,低风险也成了首批FOF公募产品的主要特点。悄悄地走到她身后,撩起她后颈上的头发,轻轻吻她,她很快会放下手里的工作,反过身拥抱你,要你抚爱她更多的部位。随着人们的生活物质越来越好,人们对饮食更加讲究健康与科学,药膳有很大的创新空间。这位记者表示,12月8日上午,他们又去了南京市栖霞区物价局,该局局长孙德友向他们解释了情况,称办公室负责人当时“有些过激”,但没有说明接下来会不会处理这位负责人。

重庆医科大学附属大学城医院开具的李琳出院记录显示,患者因“口服‘敌敌畏’意识障碍2小时”入院,入院时间为11月30日晚8时11分,洗胃治疗后,以急性有机磷中毒收治中心ICU。立即投保吴先生表示,之前曾考虑购买更多喜力生啤胶囊,然而得知这些胶囊快过期时,便打消了购买的念头。她非法冒用他人身份出国求学,然后又落户上海。

1.灰度处理

1.将cv2.imread()方法的第二参数设为0即可得到灰色图像

import cv2
import numpy as np
img0 = cv2.imread('img.jpg', 0)
img1 = cv2.imread('img.jpg', 1)
print(img0.shape)
print(img1.shape)
cv2.imshow('img0', img0)
cv2.waitKey(0)
(270, 360)
(270, 360, 3)

在这里插入图片描述

2.通过cv2.cvtColor方法对图像进行灰度转换

cv2.cvtColor(src, code, dst, dstCN):

-src: 目标图像
-code: 颜色转换方式
-dst: 图像大小
-dstCN: 颜色通道大小
import cv2
import numpy as np
img = cv2.imread('img.jpg', 1)

dat = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY )
cv2.imshow('dat', dat)
cv2.waitKey(0)

在这里插入图片描述

原理

灰色图像的所有颜色通道的值相等,所以要想将彩色图像变为灰色图像,只需将他们颜色通道的值相等即可。

3.下面我们通过源码设置它们的颜色均值来使彩色图像变为灰色图像

import cv2
import numpy as np
img = cv2.imread('img.jpg', 1)
dat = np.zeros((img.shape[0], img.shape[1]), np.uint8)
for i in range(0, img.shape[0]):
    for j in range(0, img.shape[1]):
        (b, g, r) = img[i, j]
        gray = (int(b) + int(g) +int(r)) / 3
        dat[i, j] = np.uint(gray)
cv2.imshow('dat', dat)
cv2.waitKey(0)

在这里插入图片描述

4.通过设置 gray = r * 0.299 + g * 0.587 + b * 0.114 来变为灰色图像

import cv2
import numpy as np
img = cv2.imread('img.jpg', 1)
dat = np.zeros((img.shape[0], img.shape[1]), np.uint8)
for i in range(0, img.shape[0]):
    for j in range(0, img.shape[1]):
        (b, g, r) = img[i, j]
        gray = int(b) * 0.114 + int(g) * 0.587 +int(r) * 0.299
        dat[i, j] = np.uint(gray)
cv2.imshow('dat', dat)
cv2.waitKey(0)

在这里插入图片描述

2.颜色反转

将图像的颜色反转也就是让255减去当前的颜色值

下面我们来实现灰色图像的颜色反转:

import cv2
import numpy as np
img = cv2.imread('img.jpg', 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
dat = np.zeros((img.shape[0], img.shape[1]), np.uint8)
for i in range(gray.shape[0]):
    for j in range(gray.shape[1]):
        dat[i, j] = 255 - gray[i, j]

cv2.imshow('dat', dat)
cv2.waitKey(0)

在这里插入图片描述

彩色图像的颜色反转也是一样的道理:

import cv2
import numpy as np
img = cv2.imread('img.jpg', 1)

dat = np.zeros((img.shape[0], img.shape[1], img.shape[2]), np.uint8)
for i in range(img.shape[0]):
    for j in range(img.shape[1]):
        (b, g, r) = img[i, j]
        dat[i, j] = (255 - b, 255 - g, 255 - r)
cv2.imshow('src', img)
cv2.imshow('dat', dat)
cv2.waitKey(0)

在这里插入图片描述
在这里插入图片描述

3.马赛克

原理: 取一个指定大小的窗口,将该窗口填充为一个颜色

下面我们将窗口设置为10*10来生成一个马赛克图像

import cv2
import numpy as np
img = cv2.imread('img.jpg', 1)
height = img.shape[0]
width = img.shape[1]

for m in range(50, 150):
    for n in range(100, 200):
        if m % 10 == 0 and n % 10 == 0:
            for i in range(10):
                for j in range(10):
                    (b, g,r) = img[m, n]
                    img[m + i, n + j] = (b, g, r)
cv2.imshow('img', img)
cv2.waitKey(0)

在这里插入图片描述

www.msc77.com4.毛玻璃效果

原理: 将当前的像素颜色随机设置为窗口中的一个颜色

这里我们设置窗口为8*8来生成一个毛玻璃图像

import cv2
import random
import numpy as np
img = cv2.imread('img.jpg', 1)
height = img.shape[0]
width = img.shape[1]
dat = np.zeros(img.shape, np.uint8)
for m in range(height - 8):
    for n in range(width - 8):
        index = int(random.random() * 8)
        (b, g, r) = img[m + index, n + index]
        dat[m, n] = (b, g, r)
cv2.imshow('dat', dat)
cv2.waitKey(0)

在这里插入图片描述

www.msc77.com5.图像融合

图片乘以比例系数相加得到俩张图片的融合效果:

target = src1 * a +src2 * (1 - a)

cv2.addWeighted(src1, alpha, src2, beta, gamma):

-src1: 第一张图像
-alpha: 第一张图像的权重
-src2: 第二张图像
-beta: 第二张图像的权重
-gamma: 要添加的标量
import cv2
import numpy as np
img1 = cv2.imread('img3.jpg', 1)
img2 = cv2.imread("img2.png", 1)

dat = np.zeros(img1.shape, np.uint8)
dat = cv2.addWeighted(img1, 0.5, img2, 0.5, 0)

cv2.imshow('dat', dat)
cv2.waitKey(0)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

7.边缘检测

canny边缘检测:

首先,图像降噪。我们知道梯度算子可以用于增强图像,本质上是通过增强边缘轮廓来实现的,也就是说是可以检测到边缘的。但是,它们受噪声的影响都很大。那么,我们第一步就是想到要先去除噪声,因为噪声就是灰度变化很大的地方,所以容易被识别为伪边缘。

第二步,计算图像梯度,得到可能边缘。计算图像梯度能够得到图像的边缘,因为梯度是灰度变化明显的地方,而边缘也是灰度变化明显的地方。当然这一步只能得到可能的边缘。因为灰度变化的地方可能是边缘,也可能不是边缘。这一步就有了所有可能是边缘的集合。

第三步,非极大值抑制。通常灰度变化的地方都比较集中,将局部范围内的梯度方向上,灰度变化最大的保留下来,其它的不保留,这样可以剔除掉一大部分的点。将有多个像素宽的边缘变成一个单像素宽的边缘。即“胖边缘”变成“瘦边缘”。

第四步,双阈值筛选。通过非极大值抑制后,仍然有很多的可能边缘点,进一步的设置一个双阈值,即低阈值(low),高阈值(high)。灰度变化大于high的,设置为强边缘像素,低于low的,剔除。在low和high之间的设置为弱边缘。进一步判断,如果其领域内有强边缘像素,保留,如果没有,剔除。

这样做的目的是只保留强边缘轮廓的话,有些边缘可能不闭合,需要从满足low和high之间的点进行补充,使得边缘尽可能的闭合。

import cv2
import numpy
import random
img = cv2.imread('img.jpg', 1)
cv2.imshow('src', img)
# canny 1 gray 2 高斯 3 canny
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
imgG = cv2.GaussianBlur(gray, (3,3), 0)
dat = cv2.Canny(img, 50, 50)
cv2.imshow('dat', dat)
cv2.waitKey(0)

在这里插入图片描述
在这里插入图片描述

sobel算子:
在这里插入图片描述

利用Sobel算子对图像的每一个像素进行卷积运算得到图像梯度( x 方向和 y 方向),我们可以通过计算sqrt(a**2 + b**2)来得到梯度幅值(其中 a 和 b 分别为水平方向的梯度和竖直方向的梯度),判断该值是否大于判决门限,如果大于则认为是边缘

下面我们用源码来实现:

import cv2
import math
import numpy as np
import random
img = cv2.imread('img.jpg', 1)
cv2.imshow('src', img)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换为灰色图像
dat = np.zeros((img.shape[0], img.shape[1], 1), np.uint8) #生成空模板

for i in range(img.shape[0] - 2):
    for j in range(img.shape[1] - 2):
        # 求梯度
        gy = gray[i, j] + gray[i, j + 1] * 2 + gray[i,j + 2] - (gray[i + 2, j] + gray[i + 2, j + 1] * 2 + gray[i + 2, j + 2])
        gx = gray[i, j] + gray[i + 1, j] * 2 + gray[i + 2, j] - (gray[i, j + 2] + gray[i + 1, j + 2] * 2 + gray[i + 2, j + 2])
        #得到梯度幅值
        grad = math.sqrt(gx*gx + gy*gy)
        if grad > 50:  # 判断是否为边缘
            dat[i, j] = 255
        else:
            dat[i, j] = 0
cv2.imshow('dat', dat)
cv2.waitKey(0)

在这里插入图片描述
在这里插入图片描述

已标记关键词 清除标记
??2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 www.msc77.com
申博娱乐官网 www.8181msc.com www.188msc.com 老虎机支付宝充值 申博会员登入 www.tyc123.com
菲律宾太阳网上娱乐登入 申博太阳城现金网游戏 菲律宾申博开户网址 申博游戏苹果手机怎么下载 www.77msc.com www.bet365x.com
申博怎么申请提款 www.msc88.com 申博游戏中心直营网 菲律宾太阳城直营 www.7788shenbo.com 太阳城电子游戏