首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >屏蔽来自两条不同路径的opencv图像

屏蔽来自两条不同路径的opencv图像
EN

Stack Overflow用户
提问于 2022-03-29 08:43:23
回答 1查看 378关注 0票数 2

你好,堆叠溢出的人:)我试图掩盖来自两条不同路径的许多图像,但我没有办法这样做。这是两个图像的例子,我到目前为止所做的工作

代码语言:javascript
复制
image = cv.imread('Dataset/IDRiD_02.jpg', cv.IMREAD_COLOR)
od = cv.imread('od/IDRiD_02_OD.jpg', cv.IMREAD_GRAYSCALE)
mask = od
other = cv.bitwise_not(mask)
masking =  cv.bitwise_and(image, image, mask=other)
cv.imwrite('Output/masking/' + 'masking.jpg', masking)

输入为02.jpgOD.jpg,输出为masking.jpg

然后我也想做同样的事情,但是有很多图片

代码语言:javascript
复制
import cv2 as cv
import numpy as np
import os
import glob
import os.path

od_images = [] 

for directory_path in glob.glob("od/"):
    for mask_path in glob.glob(os.path.join(directory_path, "*.jpg")):
        mask = cv.imread(mask_path, cv.IMREAD_GRAYSCALE)
        od_images.append(mask)       
od_images = np.array(od_images)

path = "Dataset/*.jpg"

for file in glob.glob(path):
        
    #read image
    image = cv.imread(file, cv.IMREAD_COLOR)
    
    # e.g. MyPhoto.jpg
    basename = os.path.basename(file)
    # e.g. MyPhoto
    name = os.path.splitext(basename)[0]
    
    mask = cv.bitwise_not(od_images)
    
    masking =  cv.bitwise_and(image, image, mask = mask)
    
    cv.imwrite('Output/masking/' + name + '_masking.jpg', masking)

但是,在运行代码之后,我将得到以下错误消息

代码语言:javascript
复制
masking =  cv.bitwise_and(image, image, mask = mask)

error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\core\src\arithm.cpp:230: error: (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function 'cv::binary_op'

有人能理解和帮助我吗?(谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-30 14:16:07

希望它会对你有用!

代码语言:javascript
复制
import cv2 as cv
import os

img_path = r"image_folder_path"
od_images = r"od_img_folder_path"
for img,od in zip(os.listdir(img_path), os.listdir(od_images)):

    image = cv.imread(img_path+"\\"+img, cv.IMREAD_COLOR)
    od = cv.imread(od_images+"\\"+od, cv.IMREAD_GRAYSCALE)

    other = cv.bitwise_not(od)
    res =  cv.bitwise_and(image, image, mask=other)

     cv.imwrite('Output/masking/' +img+ '_masking.jpg', res)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71659008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档