我正在使用OpenCV和python创建一个拼接程序,目前正在很好地拼接图像,现在正尝试将它们融合在一起。最终目标将是使用图形切割来更好地缝合它们,但现在我只是根据发现的单应性重叠图像。
我的目标是确定重叠区域,并将其放入可应用于右上图像的蒙版(就图层而言,这是最上面的一个),这样我就可以使用任何一个搅拌器根据距离来混合它opencv使用或其他算法。
任何帮助表示赞赏。
我正在使用OpenCV 3.1.0-dev和python 2.7.
我试图裁剪出我缝制的图像的黑色外观.困难在于图像中有其他像素是黑色的,所以cv2.findcontours返回一个非常有趣的numpy数组.
第一张图片是我的,第二张图片是目标.
我想知道是否有人知道如何将多边形裁剪到包含整个图像的最小正方形中.蓝线和点是cv2.findContours找到的轮廓.是否可以在numpy数组中找到左上角最多的点,在numpy数组中找到最右下角的p0int,我可以裁剪到?如果是这样,我该怎么做.
这是我目前的代码.我试图找到与作物有关的点cnt=contours[0]
import cv2
import numpy as np
img = cv2.imread("/Users/chrisradford/Documents/Research/ImagesToPass/masterToCrop.jpg",1)
grayed = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
(_,thresh) = cv2.threshold(grayed,1,255,cv2.THRESH_BINARY)
result, contours, _= cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cnt = contours[0]
# (x,y) = top left coordinate & w,h = idth and height
x,y,w,h = cv2.boundingRect(cnt) #good
cropped = img[y:y+h,x:x+w] #good
cv2.drawContours(img,contours,-1,(255,0,0),3)
cv2.imshow("result",img)
cv2.imwrite('/Users/chrisradford/Documents/Research/ImagesToPass/StackOverflow.jpg',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
任何帮助都会得到赞赏
我有一个类型的图像Mat,我试图将其分成单独的波段,以便我可以分别调整每个波段中的像素值。当我编写代码时,会弹出这个错误“没有匹配的函数来调用‘cvSplit’”。
Mat image = imread(file,1);
Mat rBand, gBand,bBand;
cvSplit(image, bBand, gBand, rBand, NULL);
imshow("red", rBand);
imshow("blue", bBand);
imshow("green",gBand);
Run Code Online (Sandbox Code Playgroud) 用 Python 编码。我有以下图像,我将其归类为制作,因此只有被发现具有其原始颜色的图像。有没有办法可以增强像素颜色(使绿色...更绿)?
img = cv2.imread("/Volumes/EXTERNAL/ClassifierImageSets/Origional_2.png",1)
mask = cv2.imread("/Users/chrisradford/Documents/School/Masters/RA/Classifier/Python/mask.png",0)
result = cv2.bitwise_and(img,img,mask=mask)
Run Code Online (Sandbox Code Playgroud)