python opencv图像处理

本文深入探讨了使用OpenCV进行图像处理的方法,包括区域兴趣(ROI)操作、颜色通道分离与合并、图像属性获取及边界填充技术。通过具体代码示例展示了如何实现这些功能,为读者提供了实践指导。
# -*- coding: utf-8 -*-

import numpy as np
from matplotlib import pyplot as plt
import cv2

def roiProcess():
	file = "F:\\dataSet\\picture\\000006 (2).jpg"
	img=cv2.imread(file)
	
	# [startRow: endRow, startCol: endCol]
	roi = img[100:400, 0:200]
	
	cv2.imshow("image", img)
	cv2.imshow("roi", roi)
	roi[:] = 0 # roi与原图像共享内存空间
	cv2.imshow("image_", img)
	
	cv2.waitKey()
	
def split_merae_pic():
	file = "F:\\dataSet\\picture\\000006 (2).jpg"
	img=cv2.imread(file)
	
	b,g,r=cv2.split(img)
	img_merge=cv2.merge([b,g,r])
	# img_merge = [b, g, r] # error
	
	zeros = np.zeros(img.shape[:2], dtype = "uint8")
	img_merge_r = cv2.merge([zeros,zeros,r])
	img_merge_g = cv2.merge([zeros,g,zeros])
	img_merge_b = cv2.merge([b,zeros,zeros])
	
	cv2.imshow("image", img)
	cv2.imshow("img_b", b)
	cv2.imshow("img_g", g)
	cv2.imshow("img_r", r)
	cv2.imshow("merge", img_merge)
	cv2.imshow("merge_r", img_merge_r)
	cv2.imshow("merge_g", img_merge_g)
	cv2.imshow("merge_b", img_merge_b)
	
	img[:,:,2]=0
	cv2.imshow("merge_b_g", img)
	
	cv2.waitKey()

def baseImageProcess():
	file = "F:\\dataSet\\picture\\000006 (2).jpg"
	img=cv2.imread(file)
	
	# get image property
	print(type(img))
	print(img.shape) # 3D array
	print("img.size=", img.size)
	print("img.hight=", img.shape[0])
	print("img.width=", img.shape[1])
	print("img.channel=", img.shape[2])
	print("img.dtype=", img.dtype)
	
	px=img[100,100]
	print(px)
	
	for pixValue in px:
		print(pixValue)
	
	blue=img[100,100,0]
	green = img[100, 100, 1]
	red = img[100, 100, 2]
	
	print('%d, %d, %d' % (blue, green, red))
	print(img[100,100,:])
	
	img[100,100]=[255,255,255]
	
	print()
	print(img.item(10, 10, 0))
	print(img.item(10, 10, 1))
	print(img.item(10, 10, 2))
	print(img[10, 10])
	img.itemset((10,10,0),255)
	img.itemset((10,10,1),255)
	img.itemset((10,10,2),255)
	
	cv2.imshow("img", img)
	
	cv2.waitKey()
	

# from matplotlib import pyplot as plt
def makeBorder():
	file = "F:\\dataSet\\picture\\000006 (2).jpg"
	img1=cv2.imread(file)
	
	BLUE=[255,0,0]
	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)
	plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL')
	plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE')
	plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT')
	plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101')
	plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP')
	plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT')
	plt.show()
	
	
def main():
	baseImageProcess()
	# roiProcess()
	# split_merae_pic()
	#makeBorder()

if __name__ == '__main__':
	main()

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值