大小为299x491的RGB图像(Img1)转换为其反转的二进制(Imag2)。我想对Img1和Img2进行逐像素乘法。现在,当我执行Img1 @ Img2时,会得到不期望的输出。
再次当我尝试使用np.multiply(Img2,Img1)
import cv2
import matplotlib.pyplot as plt
import numpy as np
img1 = cv2.imread('example1.png')
h = np.size(img1, 0)
w = np.size(img1, 1)
grayImage = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
for i in range(h):
for j in range(w):
grayImage[i, j, ] = 1 if grayImage[i, j, ] >= 127 else 0
grayImage = grayImage -1
cv2.imshow('img', grayImage)
cv2.waitKey(0)
cv2.imshow('img', img1)
cv2.waitKey(0)
img = np.multiply(grayImage,img)
#img = img1 @ grayImage
cv2.imshow('img', img)
cv2.waitKey(0)
值错误:操作数无法与形状一起广播(299,491)(299,491,3)
最佳答案
让我们尝试broadcasting:
Img1 * Img2[...,None]
关于python - 操作数不能与形状(299,491)(299,491,3)一起广播。如何解决像素乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64398644/