13

opencv libraray を使用して、同じウィンドウに白黒画像とカラー画像を表示することはできますか? これらの両方の画像を同じウィンドウに表示するにはどうすればよいですか?

4

4 に答える 4

35

fraxelの答えは、古いcvインターフェースの問題を解決しました。新しいcv2モジュールでこれがいかに簡単かを理解するために、cv2インターフェイスを使用してそれを示したいと思います。(将来の訪問者に役立つかもしれません)。以下はコードです:

import cv2
import numpy as np

im = cv2.imread('kick.jpg')
img = cv2.imread('kick.jpg',0)

# Convert grayscale image to 3-channel image,so that they can be stacked together    
imgc = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
both = np.hstack((im,imgc))

cv2.imshow('imgc',both)
cv2.waitKey(0)
cv2.destroyAllWindows()

そして、以下は私が得た出力です:

ここに画像の説明を入力してください

于 2012-06-17T06:00:16.803 に答える
8

はい、ここに例を示します。コメントで説明します。

ここに画像の説明を入力

import cv
#open color and b/w images
im = cv.LoadImageM('1_tree_small.jpg')
im2 = cv.LoadImageM('1_tree_small.jpg',cv.CV_LOAD_IMAGE_GRAYSCALE)
#set up our output and b/w in rgb space arrays:
bw = cv.CreateImage((im.width,im.height), cv.IPL_DEPTH_8U, 3)
new = cv.CreateImage((im.width*2,im.height), cv.IPL_DEPTH_8U, 3)
#create a b/w image in rgb space
cv.Merge(im2, im2, im2, None, bw)
#set up and add the color image to the left half of our output image
cv.SetImageROI(new, (0,0,im.width,im.height))
cv.Add(new, im, new)
#set up and add the b/w image to the right half of output image
cv.SetImageROI(new, (im.width,0,im.width,im.height))
cv.Add(new, bw, new)
cv.ResetImageROI(new)
cv.ShowImage('double', new)
cv.SaveImage('double.jpg', new)
cv.WaitKey(0)

Python ですが、何にでも簡単に変換できます。

于 2012-06-17T03:00:32.903 に答える
2

現代的な書き方によるコードの小さな改善

連結する

それ以外の

hstack

(スタックも使用可能)

import cv2
import numpy as np

im = cv2.imread('kick.jpg')
img = cv2.imread('kick.jpg',0)

# Convert grayscale image to 3-channel image,so that they can be stacked together    
imgc = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
both = np.concatenate((im,imgc), axis=1)   #1 : horz, 0 : Vert. 

cv2.imshow('imgc',both)
cv2.waitKey(0)
cv2.destroyAllWindows()
于 2017-09-21T10:29:23.997 に答える