?
裝環境好累,python3.6,opencv3.4
好不容易裝好了,結果
addweight的時候總是報錯
The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function cv::arithm_op
開始看到有人說時圖片大小不一致的原因我還不信,因為我第二張圖是基于第一張180度翻轉得到的,我尋思著肯定一樣大吧
然后print一下shape
print(img1.shape, img2.shape)
吐血
期間我換成py2.7,重裝了一次opencv2.4版本
于是總算懂得resize一下
?
?
1 import cv2 2 3 #加載圖片 4 img1 = cv2.imread('1.jpg') 5 img2 = cv2.imread('2.jpg') 6 7 #求img1的height 和 wide 8 h, w, _ = img1.shape 9 #這里打印出來檢測一下是否size不同 10 print(img1.shape, img2.shape) 11 12 #將img2進行縮放,注意這里的resize中(順序是寬高)和shape出來的不一樣 13 img2 = cv2.resize(img2, (w,h), interpolation=cv2.INTER_AREA) 14 15 #設定權重 16 alpha = 0.5 17 beta = 1-alpha 18 gamma = 0 19 20 #開始疊加 21 img_add = cv2.addWeighted(img1, alpha, img2, beta, gamma) 22 23 #創建一個名為‘add’的窗口用來展示 24 cv2.imshow('add',img_add) 25 26 #等待鍵入,按任意鍵退出全部窗口 27 cv2.waitKey(0) 28 cv2.destroyAllWindows()
原圖是:
官方教程是這樣的:
img1 = cv2.imread('ml.png') img2 = cv2.imread('opencv_logo.jpg')dst = cv2.addWeighted(img1,0.7,img2,0.3,0)cv2.imshow('dst',dst) cv2.waitKey(0) cv2.destroyAllWindows()
然而人家的倆圖尺寸一毛一樣
修改后應該是這樣
import cv2 img1 = cv2.imread("1.jpg") img2 = cv2.imread("2.jpg") h, w, _ = img1.shape img2=cv2.resize(img2,(w,h),interpolation=cv2.INTER_AREA) dst = cv2.addWeighted(img1,0.7,img2,0.3,0) cv2.imshow("dst",dst) cv2.waitKey(0) cv2.destroyAllWindows()
?