0
我想使用cvMerge()合併8個圖像,但它不工作。我應該如何合併這8個圖像?我如何在opencv中合併8個圖像?
下面是查看圖像的不同位平面的代碼。並將所有8張圖像合併爲輸入圖像。
#include <iostream>
#include <cv.h>
#include <highgui.h>
#include "rgb.h"
#include <cmath>
using namespace std;
int T(int r)
{
if (r == 0)
return 0;
else
return 255;
}
int main()
{
char infname[256];
cout << "Enter input image : ";
cin >> infname;
IplImage *mono = cvLoadImage(infname, 0);
BwImage pic(mono);
int H = mono->height;
int W = mono->width;
IplImage *out0 = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 1);
IplImage *out1 = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 1);
IplImage *out2 = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 1);
IplImage *out3 = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 1);
IplImage *out4 = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 1);
IplImage *out5 = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 1);
IplImage *out6 = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 1);
IplImage *out7 = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 1);
IplImage *output1 = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 4);
IplImage *output2 = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 4);
IplImage *output = cvCreateImage(cvSize(W,H), IPL_DEPTH_8U, 2);
BwImage bp0(out0);
BwImage bp1(out1);
BwImage bp2(out2);
BwImage bp3(out3);
BwImage bp4(out4);
BwImage bp5(out5);
BwImage bp6(out6);
BwImage bp7(out7);
BwImage b1(output1);
BwImage b2(output2);
BwImage b(output);
for (int y = 0; y < H; y++)
for (int x = 0; x < W; x++){
bp0[y][x] = T(pic[y][x] % 2);
bp1[y][x] = T((pic[y][x]/2) % 2);
bp2[y][x] = T((pic[y][x]/4) % 2);
bp3[y][x] = T((pic[y][x]/8) % 2);
bp4[y][x] = T((pic[y][x]/16) % 2);
bp5[y][x] = T((pic[y][x]/32) % 2);
bp6[y][x] = T((pic[y][x]/64) % 2);
bp7[y][x] = T((pic[y][x]/128) % 2);
}
// here's the pronlem. i guess
cvMerge(out0,out1,out2,out3,output1);
cvMerge(output1,out4,out5,out6,output2);
cvMerge(output2,out7,NULL,NULL,output);
cvWaitKey(0);
cvSaveImage("b0.png", out0);
cvSaveImage("b1.png", out1);
cvSaveImage("b2.png", out2);
cvSaveImage("b3.png", out3);
cvSaveImage("b4.png", out4);
cvSaveImage("b5.png", out5);
cvSaveImage("b6.png", out6);
cvSaveImage("b7.png", out7);
cvSaveImage("b8.png", output);
cvReleaseImage(&mono);
cvReleaseImage(&out0);
cvReleaseImage(&out1);
cvReleaseImage(&out2);
cvReleaseImage(&out3);
cvReleaseImage(&out4);
cvReleaseImage(&out5);
cvReleaseImage(&out6);
cvReleaseImage(&out7);
cvReleaseImage(&output);
return 0;
}
提示:''鍵通常位於鍵盤的左上角。 –
2013-03-03 07:00:27
首先嚐試合併2張圖片,如果您遇到問題,請發佈包含您遇到的任何錯誤的特定問題。 – 2013-03-03 07:16:31
是的,添加2 - 4個圖像的工作。第一個cvMerge工作。但是當我添加第二個和第三個合併時,出現錯誤:斷言失敗。中止(核心轉儲) – Abby 2013-03-03 15:15:52