问题陈述
📌使用Python代码自己创建图像🔌获取2个图像,裁剪这两个图像的一部分并交换它们。📌拍摄2张图像并将其组合成一张图像。例如,拼贴
因此,在这篇文章中,我们将看到如何创建图像,取2个图像裁剪它,交换它们,并使用python中的OpenCV模块将两个图像组合成一个图像。
图像处理
图像处理是一种对图像进行某些操作,以获得增强的图像和/或从中提取有用信息的方法。图像处理是对数字化图像的分析和处理,特别是为了提高其质量。
Python中的OpenCV模块是什么?
OpenCV是一个巨大的开源库,用于计算机视觉、机器学习和图像处理。OpenCV支持多种编程语言,如Python、C++、Java等。它可以处理图像和视频来识别对象、人脸,甚至是人的笔迹。使用OpenCV可以解决很多应用,其中包括人脸和对象识别、视频/图像搜索和检索、电视频道广告识别和街景图像拼接。
安装和导入软件包
pip install numpy
pip install opencv-python
3.在python代码中导入上述模块。
import numpy
import cv2
用于使用Python代码创建图像
OpenCV-Python是一个Python库,旨在解决计算机视觉问题。CV2是其中的一个模块,它提供了多种操作图像的方法。cv2module有很多函数可以帮助读取和操作图像,Python中的NumPy支持绘制各种形状。
代码:
img = numpy.zeros((512,512,3))
# Writing text
font = cv2.FONT_HERSHEY_SIMPLEX
img = cv2.putText(img, 'Image Creation', (50, 50),font, 0.8, (0,255,255), 2)
# Creating a Rectangles
img = cv2.rectangle(img,(12,12),(312,312),(255,255,0),3)
img = cv2.rectangle(img,(100,100),(400,400),(0,255,0),3)
img = cv2.rectangle(img,(200,200),(500,500),(255,0,255),3)
img = cv2.rectangle(img,(300,300),(600,600),(5,200,2),3)
img = cv2.rectangle(img,(500,500),(600,600),(150,0,25),3)
# Creating a Circle
img = cv2.circle(img, (200, 200), 80, (255, 0, 0), 3)
# Allows us to see image
cv2.imshow("myimage",img)
cv2.waitKey(10000)
# Until closed forcefully
cv2.destroyAllWindows()
阅读2张图片,裁剪两张图片的一部分,然后互换。
第一步:这里导入了cv2,可以观察到这两个画面。cv2.imread()方法从指定文件加载图像。cv2.imshow()方法用于在窗口中显示图像。cv2.waitkey()它等待x毫秒等待OpenCV窗口上的按键。cv2.delestyAllWindows()只是销毁我们创建的所有窗口。
import cv2
#Allows us to read a image1
img1 = cv2.imread("1.jpg")
# Allows us to see image1
cv2.imshow("FirstImage",img1)
cv2.waitKey(10000)
# Until closed forcefully
cv2.destroyAllWindows()
#Allows us to read a image2
img2 = cv2.imread("2.jpg")
# Allows us to see image2
cv2.imshow("SecondImage",img2)
cv2.waitKey(10000)
# Until closed forcefully
cv2.destroyAllWindows()
步骤2:两张图片的尺寸不一样,我们可以使用cv2模块中的方法-œ调整大小-�对其进行更改。
#Allows us to resize a image1
new_img1 = cv2.resize(img1,(900,512))
# Allows us to see new_image1
cv2.imshow("NewFirstImage",new_img1)
cv2.waitKey(10000)
# Until closed forcefully
cv2.destroyAllWindows()
调整大小后,两幅图像的尺寸相同。
步骤3:为了裁剪我们使用的图像,请使用以下代码
crop_img1=new_img1[0:200,0:200]
# Allows us to see crop_image1
cv2.imshow("CroppedFirstImage",crop_img1)
cv2.waitKey(10000)
# Until closed forcefully
cv2.destroyAllWindows()
crop_img2=new_img2[0:200,0:200]
# Allows us to see crop_image2
cv2.imshow("CroppedSecondImage",crop_img2)
cv2.waitKey(10000)
# Until closed forcefully
cv2.destroyAllWindows()
步骤4:为了将这些裁剪的部分与我们使用的图像进行交换,我们使用以下代码
swap_img1=crop_img2
new_img1[200:400,200:400]=swap_img1
# Allows us to see new_image1 after swapping
cv2.imshow(“SwappedFirstImage�,new_img1)
cv2.waitKey(10000)
# Until closed forcefully
cv2.destroyAllWindows()
正如我们所知,我们不能在Python中将变量或值声明为常量。因为python变量是引用,所以我们有效地传递了引用的副本。因此,如果我们将图像作为变量传递,并且不更改它,那么它实际上传递的是一个常量-euroœ-�。但是在交换第一个图像时,我们更改了变量,所以当交换第二个图像和裁剪部分时,我们必须再次遵循步骤2、3、4。
swap_img2=crop_img1
new_img2[200:400,200:400]=swap_img2
# Allows us to see new_image2 after swapping
cv2.imshow(“SwappedSecondImage�,new_img2)
cv2.waitKey(10000)
# Until closed forcefully
cv2.destroyAllWindows()
Python中有一个名为NumPy的模块,它支持拼贴/组合图像。在这里,使用Numpy Supports水平组合图像中的hstack()对两个图像进行拼贴/组合。
import cv2
import numpy
#Allows us to read a image1
img1 = cv2.imread(“1.jpg�)
#Allows us to read a image2
img2 = cv2.imread(“2.jpg�)
new_img1 = cv2.resize(img1,(600,512))
new_img2 = cv2.resize(img2,(600,512))
horizontal_collage = numpy.hstack((new_img1,new_img2))
# Allows us to see image1
cv2.imshow(“Horizontal Collage�,horizontal_collage)
cv2.waitKey(10000)
# Until closed forcefully
cv2.destroyAllWindows()
numpy中的vstack()支持图像的垂直组合。
import cv2
import numpy
#Allows us to read a image1
img1 = cv2.imread("1.jpg")
#Allows us to read a image2
img2 = cv2.imread("2.jpg")
new_img1 = cv2.resize(img1,(300,400))
new_img2 = cv2.resize(img2,(300,400))
vertical_collage = numpy.vstack((new_img1,new_img2))
# Allows us to see vertical_collage
cv2.imshow("Vertical Collage",vertical_collage)
cv2.waitKey(10000)
# Until closed forcefully
cv2.destroyAllWindows()
结论
在Python中,有许多功能强大的库可以简化图像处理,比如OpenCV、SciKit-Image和Pillow。NumPy是Numerical和Numarray的扩展。可以使用NumPy函数执行各种图像处理。
在这篇文章中,我们已经看到了一些基本的操作:如何创建、读取和调整图像大小,裁剪和交换图像的一部分,水平或垂直组合两个图像。
感谢您的阅读!!
快乐学习,快乐分享:)
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/06/20/%e8%ae%a1%e7%ae%97%e6%9c%ba%e8%a7%86%e8%a7%89%ef%bc%9a%e4%bd%bf%e7%94%a8python%e4%b8%ad%e7%9a%84opencv%e6%a8%a1%e5%9d%97%e5%af%b9%e5%9b%be%e5%83%8f%e8%bf%9b%e8%a1%8c%e5%9f%ba%e6%9c%ac%e6%93%8d/