Я новичок в OpenCV, и я пытаюсь выполнить образ из каталога, сделать его черно-белым (оттенки серого), а затем записать его в другой файл. Но выходное изображение сильно отличается от того, что я ожидал. Может быть, вы можете мне помочь и указать на ошибки в коде?OpenCV цветное изображение для серых проблем
#include <iostream>
#include <opencv2/opencv.hpp>
#include <conio.h>
#include <string.h>
#include <string>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <stdio.h>
#include <stdlib.h>
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
using namespace std;
void faktorial(int InSize, char *DataIn, char *DataOut)// заголовок функции
{
for(int i = 0, j = 0; i < InSize; i += 4, j++)
{
DataOut[j] = (DataIn[i] + DataIn[i + 1] + DataIn[i + 2])/3;
}
}
int main()
{
char* c = "E:\henrik-evensen-castle-valley-v03.jpg";
printf("Input source of image\n Example of right directory file: E:\henrik-evensen-castle-valley-v03.jpg\n Your try:\n");
char *tbLEN;
tbLEN = new char [1024];
cin.getline(tbLEN,1024);
cout << tbLEN;
IplImage* image;
image = cvLoadImage(tbLEN, 1);
int height1 = image->height;
int width1 = image->width;
int step = image->widthStep;
int SizeIn = step*height1;
char* DatIn = image->imageData;
IplImage *image2 = cvCreateImage(cvSize(image->width, image->height), IPL_DEPTH_8U, 1);
char* DatOut = image2->imageData;
faktorial(SizeIn, DatIn, DatOut);
cvNamedWindow("Imagecolor");
cvShowImage("Imagecolor", image);
cvNamedWindow("Gray");
cvShowImage("Gray", image2);
cvWaitKey(0);
return 0;
}
EDIT: не нужна функция CvtColor, мне нужно использовать эту одну функцию факториала.
Есть ли какая-то конкретная причина, по которой вы используете C-API, а не C++ API? Вы все равно *, включая заголовки C++, и C-API, насколько я знаю, устарел. Если кто-то не заставляет вас, я бы рекомендовал не использовать C-API. Вероятно, ваша ошибка исчезнет, если вы используете C++ API, так как он заботится о некоторых вещах для вас. –
Возможный дубликат [Конвертировать RGB в Black & White в OpenCV] (http://stackoverflow.com/questions/1585535/convert-rgb-to-black-white-in-opencv) – Samer
** Samer ** много спасибо за эту ссылку, это очень полезно для меня, не знаю, как я мог бы передать эту тему. ** Hannes Ovrén ** Итак, IplImage, cvSaveImage, cvCreateImage и т. Д. Являются C-API, правильно? И в моем случае мне нужно использовать Mat, imwrite и другие, которые из C++ API, я прав? – Generwp