关于pycharm、opencv进行图像处理

本文详细介绍了如何使用PyCharm结合OpenCV进行图像处理,涵盖图像基本操作,傅里叶变换及其可视化,直方图绘制与图像变换,还包括了卷积、滤波和边缘检测等高级技术。
摘要由CSDN通过智能技术生成

第一部门

第二部分

图像基本操作

#①读入文件并显示其像素值
import cv2
cv2.imread("image/Chrysanthemum.jpg",1)
image = cv2.imread("image/Chrysanthemum.jpg")
print(image)

#②读入文件并显示该图片
import cv2
cv2.imread("image/Chrysanthemum.jpg",1)
image = cv2.imread("image/Chrysanthemum.jpg")
cv2.imshow("flower",image)
cv2.waitKey()

#获取 彩色图像和灰度图像的属性
import cv2
image_Color = cv2.imread("image/Chrysanthemum.jpg") # 读取1.1.jpg
print("获取彩色图像的属性:")
print("shape =", image_Color.shape) # 打印彩色图像的(垂直像素,水平像素,通道数)
print("size =", image_Color.size) # 打印彩色图像包含的像素个数
print("dtype =", image_Color.dtype) # 打印彩色图像的数据类型
image_Gray = cv2.imread("1.1.jpg", 0) # 读取与1.1.jpg(彩色图像)对应的灰度图像
print("获取灰度图像的属性:")
print("shape =", image_Gray.shape) # 打印灰度图像的(垂直像素,水平像素)
print("size =", image_Gray.size) # 打印灰度图像包含的像素个数
print("dtype =", image_Gray.dtype) # 打印灰度图像的数据类型

#像素属性
import cv2
image = cv2.imread("image/Chrysanthemum.jpg") # 读取1.1.jpg
px = image[291, 218]
print(px)
blue=image[291,218,0]
green=image[291,218,1]
red=image[291,218,2]
print(blue,green,red)
rgb_image = cv2.imread("image/Desert.jpg")
cv2.imshow("2.1", rgb_image) # 显示图2.1
b, g, r = cv2.split(rgb_image) # 拆分图2.1中的通道
cv2.imshow("B", b) # 显示图2.1中的B通道图像
cv2.imshow("G", g) # 显示图2.1中的G通道图像
cv2.imshow("R", r) # 显示图2.1中的R通道图像
cv2.waitKey()
cv2.destroyAllWindows()

#修改像素值
import cv2
image = cv2.imread("image/Chrysanthemum.jpg") # 读取1.1.jpg
px = image[291, 218] #坐标 任意输入
print(px)
px = [255,255,255]
px=[0,0,0]
cv2.imshow("ww",image)
cv2.waitKey()

#修改某一区域内的所有像素值
import cv2
image = cv2.imread("image/Chrysanthemum.jpg")
print(image)
cv2.imshow("2.1", image) # 显示图2.1
for i in range(0, 768): # i表示横坐标,在区间[241, 291]内取值
  for j in range(0, 1024): # j表示纵坐标,在区间[168, 218]内取值
    image[i, j] = [0, 255, 255] # 把区域内的所有像素都修改为白色
cv2.imshow("fixed", image) # 显示修改图
cv2.waitKey()
cv2.destroyAllWindows() # 关闭所有的窗口时,销毁所有窗口

# 将图2.1从RGB色彩空间转换到GRAY色彩空间
import cv2
image = cv2.imread("image/Koala.jpg")
cv2.imshow("2.1", image) # 显示图2.1
gray_image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
gray_image2 = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
cv2.imshow("GRAY", gray_image) # 显示灰度图像
cv2.imshow("GRAY", gray_image2) # 显示HSV
cv2.waitKey()
cv2.destroyAllWindows()

#拆分RGB
import cv2
rgb_image = cv2.imread("image/Penguins.jpg")
cv2.imshow("2.1", rgb_image) # 显示图2.1
b, g, r = cv2.split(rgb_image) # 拆分图2.1中的通道
cv2.imshow("B", b) # 显示图2.1中的B通道图像
cv2.imshow("G", g) # 显示图2.1中的G通道图像
cv2.imshow("R", r) # 显示图2.1中的R通道图像
cv2.waitKey()
cv2.destroyAllWindows()

 

第三部分

傅里叶变换、逆变换及可视化-绘制纯色及条纹图像

#.....................................完成图像的傅里叶变换并可视化.................
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('image/img.png', 0)
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
fimg = np.log(np.abs(fshift))
plt.subplot(121), plt.imshow(img, 'gray'), plt.title('Original Fourier')
plt.axis('off')
plt.subplot(122), plt.imshow(fimg, 'gray'), plt.title('Fourier Fourier')
plt.axis('off')
plt.show()

#.........................绘制黑白相间图像, 练习画横条纹......................
import numpy as np
import cv2
width=800
height=600
img=np.zeros((width, height), np.uint8)
for i in range(0,width,40):
 img[:,i:i+20]=255
cv2.imshow('img', img)
cv2.waitKey()
cv2.destroyAllWindows()

#..........................特殊图像傅里叶变换黑色图片白色矩形..............................
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('image/8517805.jpg', 0)
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
fimg = np.log(np.abs(fshift))
plt.subplot(121), plt.imshow(img, 'gray'), plt.title('Original')
plt.axis('off')
plt.subplot(122), plt.imshow(fimg, 'gray'), plt.title('Fourier')
plt.axis('off')
plt.show()

#.......................例3 将波纹图像和原图像叠加再做傅里叶变换........................
import numpy as np
import cv2
from matplotlib import pyplot as plt
import numpy as np
import cv2
width=1080
height=1920
img1=np.zeros((width, height), np.uint8)
for i in range(0,height,20):
 img1[:,i:i+10]=120
print(img1)
img2 = cv2.imread('image/8517805.jpg', 0) #219*292
print(img2)
img = img1+
  • 2
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值