python - 如何在 Python 中使用 OpenCV 翻译图像的一小部分

标签 python opencv

我有底部半圆左上角的坐标,我知道如果用矩形包围半圆的长度和宽度。我想要做的是将底部半圆向上平移 4 个像素。那么有人可以提供一些代码来翻译知道所有坐标的图像的一部分吗?谢谢。

Image

最佳答案

感谢@Rachel L 的帮助,但我不久前就弄明白了。基本上我创建了一个包含底部半圆的单独图像,我使用了一种方法来获取底部每个半圆的左上角。然后我计算出半圆的长度和宽度,并将我创建的框中的所有黑色像素移动了 5 个单位,使其对齐。

我可能应该补充说,这是一个更大项目的一部分,我需要从该图像移动底部的所有半圆,以便它们全部对齐,这意味着我不知道它们的坐标。 image

提取半圆位置的方法

def extract(name1, name2):
img_rgb = cv2.imread(name1)
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread(name2,0)   
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
arr = []
for pt in zip(*loc[::-1]):
    if "down" in name2:
        pt = (pt[0], pt[1] + 1)
    arr.append(pt)
return arr

向上移动半圆的代码

locFillSemiDown = extract('img' + str(num) + '.png', 'filledsemidown.png')

for loc in locSemiDown:
   for y in range(loc[0], loc[0] + 11):
      for x in range(loc[1], loc[1] + 6):
         if(img.item(x,y,0) == 0 and img.item(x,y,1) == 0 and img.item(x,y,2) == 0):  
            img.itemset((x - 5, y,0),0)
            img.itemset((x - 5, y,1),0)
            img.itemset((x - 5, y,2),0)
            img.itemset((x, y,0),0)
            img.itemset((x, y,1),255)
            img.itemset((x, y,2),255)

enter image description here

关于python - 如何在 Python 中使用 OpenCV 翻译图像的一小部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34119515/

相关文章:

python - 如何在 django 中美化 rss feed?

c++ - OpenCV 视频模块教程

python - 如何理解下面的 'os.path.join' python命令?

python - 如何保持 Pandas 的内存效率?

opencv - Eigenfaces人脸识别训练数据

python - 适应不同雷电条件的OpenCV阈值

OpenCV cvCvtColor 没有链接?

python - 如何正确使用 cv2.pointPolygonTest() 和 cv2.findcontours()?

python - Numpy 在 Python3 Google App 灵活引擎中失败

python - Scrapy获取回调数据