python - 操作数不能与形状(299,491)(299,491,3)一起广播。如何解决像素乘法?

标签 python numpy opencv image-processing computer-vision

大小为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/

相关文章:

python - 从分类分布 pytorch 中获取样本

python - 使用 OpenCV python 跟踪黄色对象

python - 在Python中读取巨大的MySQL表的最快方法

python - 如何保留 xml 样式表?

python - IndexError 使用 pandas pivot_table 方法

python - 如何使用 Flask 构建离线网络应用程序?

python-3.x - 我如何改进此解决方案以使其使用 numpy 更快?

dll - tbb_debug.dll丢失-MSER示例OpenCV 2.3.1

c - 如何在我的 cuda 代码中使用 opencv?

用于计算 : 1 + 2 + 4 + 8 + 16 + 32 + 64 + . ... + n 序列项之和的 Python 程序,其中 n 是输入