私はC++(opencv version 2.4)を使ってエラーレベル解析アルゴリズムを実装しています。私はcythonを使ってpythonラッパーを作りたいと思っています。 私はC++のためのcythonのドキュメントの一部を読んだことがありますが、それは私を助けず、さらにラッパーをオンラインで実装するための追加情報は見つかりませんでした。 誰かが私を導き、私がこの問題を解決するのを助けることができれば、本当に素晴らしいことでしょう。cythonを使ったエラーレベル解析アルゴリズムのopencv実装の実装
これは私がpyhtonラッパーを構築したい私のコードです:
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <vector>
// Control
int scale = 15,
quality = 75;
// Image containers
cv::Mat input_image,
compressed_image;
void processImage(int, void*)
{
// Setting up parameters and JPEG compression
std::vector<int> parameters;
parameters.push_back(CV_IMWRITE_JPEG_QUALITY);
parameters.push_back(quality);
cv::imwrite("lena.jpeg", input_image, parameters);
// Reading temp image from the disk
compressed_image = cv::imread("lena.jpeg");
if (compressed_image.empty())
{
std::cout << "> Error loading temp image" << std::endl;
exit(EXIT_FAILURE);
}
cv::Mat output_image = cv::Mat::zeros(input_image.size(), CV_8UC3);
// Compare values through matrices
for (int row = 0; row < input_image.rows; ++row)
{
const uchar* ptr_input = input_image.ptr<uchar>(row);
const uchar* ptr_compressed = compressed_image.ptr<uchar>(row);
uchar* ptr_out = output_image.ptr<uchar>(row);
for (int column = 0; column < input_image.cols; column++)
{
// Calc abs diff for each color channel multiplying by a scale factor
ptr_out[0] = abs(ptr_input[0] - ptr_compressed[0]) * scale;
ptr_out[1] = abs(ptr_input[1] - ptr_compressed[1]) * scale;
ptr_out[2] = abs(ptr_input[2] - ptr_compressed[2]) * scale;
ptr_input += 3;
ptr_compressed += 3;
ptr_out += 3;
}
}
// Shows processed image
cv::imshow("Error Level Analysis", output_image);
}
int main (int argc, char* argv[])
{
// Verifica se o número de parâmetros necessário foi informado
if (argc < 2)
{
std::cout << "> You need to provide an image as parameter" << std::endl;
return EXIT_FAILURE;
}
// Read the image
input_image = cv::imread(argv[1]);
// Check image load
if (input_image.empty())
{
std::cout << "> Error loading input image" << std::endl;
return EXIT_FAILURE;
}
// Set up window and trackbar
cv::namedWindow("Error Level Analysis", CV_WINDOW_AUTOSIZE);
cv::imshow("Error Level Analysis", input_image);
cv::createTrackbar("Scale", "Error Level Analysis", &scale, 100, processImage);
cv::createTrackbar("Quality", "Error Level Analysis", &quality, 100, processImage);
// Press 'q' to quit
while (char(cv::waitKey(0)) != 'q') {};
return EXIT_SUCCESS;
}
貢献を歓迎します。 ありがとうございます。
私は、あなたが望むものについて詳しく考える必要があると思います:あなたのgithubによれば、その両方のパラメータを無視して何も返さない1つの関数があります - これは有意義にラップできるようには見えませんCythonで。また、コマンドライン引数としていくつかのファイル名を受け取り、opencvを呼び出すメインプログラムもあります。これは、実際にはCythonでラップするのには適していません。また、コードをオフサイトに置いていますので、ここで自己完結型の質問ではありません。最後に、既にPython用のopencvラッパーがありますか?それを使わないのはなぜですか? – DavidW
サー、サイモンを使って私に提供されるタスクの一部であり、それを完了するための必要性です。私はcythonを初めて使っているので、上記のコードをcythonを使ってラップすることで私を導くことができれば本当に素晴らしいでしょう。ラップされたものや他の関連するものを得ることに関わるクラスは何でしょうか。ありがとうございました。 –