gpt4 book ai didi

opencv - Python OpenCV裁剪无法正常工作

转载 作者:行者123 更新时间:2023-12-02 16:47:31 27 4
gpt4 key购买 nike

我对OpenCV比较陌生。我从教程中搜集到的信息,可以使用以下脚本进行裁剪:

import cv2
import numpy as np
import video

cam = cv2.VideoCapture(0)
ret,vis = cam.read()
crop = vis[100:400, 100:300]
cv2.imshow("Img",vis)
cv2.imshow("Crop",crop)
cv2.waitKey(0)

这很好。我没有错误。

但是,当我将其放到主脚本中时,它不起作用,我将其范围缩小到此代码段:
def PicTake(self):
ret,vis = self.cam.read()
x1,y1 = self.selection[0]
x2,y2 = self.selection[1]
a = 0
taken = 0
while taken == 0:
if cv2.imread("C:\Python27\opencv\samples\python2\Major\Test"+str(a)+".png") == None:
crop = vis[x1:y1, x2:y2]
print crop
cv2.imshow("crop",crop)
cv2.imwrite("C:\Python27\opencv\samples\python2\Major\Test"+str(a)+".png",crop)
taken = 1
else:
a+=1
return ("Picture Taken")

其中self.selection只是两个元组[[x1,y1),(x2,y2)]的列表。在第一个if语句之后,print crop返回“[]”和空列表。

是的,为什么它可以在数字和其他情况下正常工作,但在这里不行?!

非常感谢任何帮助,谢谢!

最佳答案

vis只是一个numpy数组。
检查print vis.shape的结果以检查输入图像的尺寸。
如果是彩色图像,则可能是这样的:

(367, 550, 3)

它按 heightwidthcolor depth的顺序表示维度。
因此,如果要在x2> x1和y2> y1时从(x1,y1)到(x2,y2)中选择一个部分:
vis[y1:y2, x1:x2]

这也将涵盖深度尺寸。
请注意,如果使用 y2<y1x2<x1,则结果将为空数组。

关于opencv - Python OpenCV裁剪无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16940103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com